Skip to content

变量绑定

思路梳理

通过前面的创建菜单,相信你已经做出了自己的选项,只不过这些选项还没有生效。原因显而易见,我们只是给菜单增加了一些选项。
现在我们要来为上一章中创建的动画们取一个计算机能懂的名字,也就是变量名,这样菜单才能认识它们。

注意事项

  • 一个角色身上只能有1个主菜单,但是通过子菜单(SubMenu)可以套娃很多菜单。
  • 一个角色身上只能由1个变量组,变量组的可同步变量容量上限为256 Bit
  • 关于网络同步变量的详情,请查阅官方文档

全新变量

全新创建适用于没有自带菜单的Avatar,例如Rusk

步骤

  1. 在你的菜单文件夹上单击右键,依次选择Create - VRChat - Avatars - Expression Parameters,创建一个变量组,并命名为BianLiangimg

  2. 点击变量表里的-将默认自带的三个变量删除,这些是用来控制表情的我们暂时用不上,可以安全的删除掉。 img

关于默认变量

查阅官方文档,由于本教程目前用不上,可安全的删除掉。

  1. 选择角色,将BianLiang拖入角色身上的VRC Avatar Descriptor组件Expressions中的Parameters目标框中。 img

  2. 双击进入编辑。

拓展变量

拓展菜单适用于已有自带菜单的Avatar,例如Manuka

步骤

直接双击Parameters的目标框进入编辑。 new

提醒

选中角色,在VRC Avatar Descriptor组件中的Expressions下,如果已有MenuParameters,则说明该模型已有变量组,直接在源文件上编辑即可。

编辑变量

在本教程的计算机变量基础中,我们举了一个生活例子,一个贴了标签的杯子。现在我们就要来为衣物贴上标签。

步骤

  1. BianLiang中点击+号,Name即标签,我们填写YiWu(衣物),TypeInt(整数),Default0,勾选SavedSyncedimg

小知识

  • Name:变量名,即变量的名称。
  • Type:变量名中存储的数值类型,有Int(整数) Float(浮点数) 和 Bool(布尔值)。
  • Default:变量名中存储的默认值,例如用于设置默认的衣物。
  • Saved:保存变量数值。在游戏中切换世界或重启游戏后,如果没有勾选这一项,你已设置好的衣物或饰品会被还原成默认值
  • Synced:网络同步。勾选了这一项别人才能看见你的变化,否则只能本地(你自己)看见。
    这是一个很灵活的选项,有一些运算可以放在本地,最后只用一个值同步给别人即可。当然这是进阶用法了,我们目前用不上。
  1. 双击我们在前面章节中创建的衣物动画控制器

    1. 点击左上角的Parameters按钮,这里还是空的。
      我们需要把变量组中添加的变量一一对应添加过来。
    2. 我们的YiWu的变量类型是Int,所以点击+按钮,选择Int,然后将变量名修改为YiWuimg

    注意

    动画控制器中的变量名称(Name)变量类型(Type)一定要和你的变量组中目标变量(以后你可能会添加很多东西,有各种各样的变量,这里只拿衣物'YiWu'举例)包括大小写完全一致

  2. Any State上单击右键,点击Make Transition会引出一条线。点三次,将MoRen(默认),1(衣服1),2(衣服2)全部连接上。 img

  3. 我们为YiWu这个变量名称创造了几个“路口”。现在我们需要来在“路口”上设置条件,来告诉YiWu该走哪条道:

    1. 首先是MoRen(默认)道,点击通往MoRen的这条。在Inspector窗口中展开Settings,将Transition Duration(s)设置为0img

    小知识

    Transition Duration(s):动画过渡时间。由于我们做的是切换功能,需要立即执行,所以改成0.

    1. 在下方的Conditions(条件)窗口下,点击+号创建一个条件。第1列选择我们的YiWu(衣物)变量名,第2列选择条件
      即:当YiWu中的数值比较(大于,小于,等于或不等于)第三列中的数值成立时,就走这一道。
      这里我们选择Equals(等于)0img

    小知识

    • Greater:大于
    • Less:小于
    • Equals:等于
    • NotEqual:不等于
    • 我们这里的条件意思是:当YiWu等于0时,就切换为默认衣服
  4. 现在设置第1件衣服,顺着默认衣服的条件思路:

    1. 点击通往1(第1件衣服)这条。在Inspector窗口中展开Settings,将Transition Duration(s)设置为0
    2. 在下方的Conditions(条件)窗口下,点击+号创建条件:当YiWu等于1时,就切换为第1件衣服img
  5. 设置第2件衣服的条件: img

  6. 配置好后,你已经完成了90%的进度!但先别急,我们只是设置好了切换逻辑,现在我们要将他应用到我们的菜单

  7. 选择我们衣物子菜单,选择默认选项,Parameter选择YiWu, Int,将Value设置为0img

提醒

这么设置完后,这个选项的作用是:将YiWu中存储的变量值更改为0,即换上我们的默认衣服。

  1. 选择1(第1件衣服)选项,Parameter选择YiWu, Int,将Value设置为1img

提醒

设置完后,这个选项的作用是:将YiWu中存储的变量值更改为1,即换上我们的第1件衣服。

  1. 选择2(第1件衣服)选项,Parameter选择YiWu, Int,将Value设置为2img

提醒

设置完后,这个选项的作用是:将YiWu中存储的变量值更改为2,即换上我们的第2件衣服。

  1. 最后来到Hierarchy,选择我们角色身上的====衣服(如果你此前没有创建这个,在角色内创建一个空对象并重命名也可以),从Inspector中点击Add Component,添加MA Merge Animatorimg

  2. 接下来:

    • 将我们的衣物动画控制器拖放到MA Merge Animator组件中的要合并的Animator目标框中。
    • Layer类型选择为FX
    • 路径模式选择为绝对路径(基于Avatar的根对象)
    • 勾选匹配Avatar的Write Defaultimg
  3. 运行GestureManager,这时我们的切换衣物功能就生效了! img

  4. 退出运行,将我们此前放在角色身上的动画控制器清空:选择角色,左键单击一下Animator组件中的Controller目标框,然后按键盘Delete键清空。 img

测试模型

现在我们已经在Unity模拟完成了模型的切换衣物功能,现在我们直接在游戏中运行,测试它是否正常。

注意

  • 我们在Unity中使用的GestureManager只是一个模拟器,并不能完全代表在游戏中运行的实际效果。 我们还是需要在游戏中测试模型。
  • 本地构建仅用于测试模型,其他玩家是看不见你的模型的。

步骤

  1. 打开VRChat Control Panel登录
  2. 将所有六边形并且有Auto Fix按钮的警告,点击Auto Fiximg

频繁出错点

  • 只有同时满足六边形和有Auto Fix按钮的警告,才需要点击Auto Fix
  • 其他的任何黄色,白色警告不需要点击
  1. 修复后在下方Build Type选择Build & Test Your Avatarimg

  2. 点击Build & Test按钮等待构建完毕,显示Succeeded后进入游戏img

  3. 游戏菜单中选择角色 - SDK 测试角色,就能看见我们的模型了。套用以测试你的模型。 img

  4. (可选步骤)可以看见我们的角色预览界面衣物重叠了。调整角色的衣物状态,将不必要的衣服关闭。多数情况下,游戏中的角色预览就是你在UnityScene窗口看见的模样,可以关闭除你想看的以外的衣物,避免在游戏中预览角色时衣物重叠。 imgimg

上传

此前教过,简单说说:开启加速器并用路由(TUN)模式,回到UnityBuild Type选择Build & Publish Your Avatar Online

Released under the CC License.