变量绑定
思路梳理
通过前面的创建菜单,相信你已经做出了自己的选项,只不过这些选项还没有生效。原因显而易见,我们只是给菜单增加了一些空选项。
现在我们要来为上一章中创建的动画们取一个计算机能懂的名字,也就是变量名,这样菜单才能认识它们。
注意事项
- 一个角色身上只能有
1个主菜单,但是通过子菜单(SubMenu)可以套娃很多菜单。 - 一个角色身上只能由
1个变量组,变量组的可同步变量容量上限为256 Bit。 - 关于网络同步变量的详情,请查阅官方文档。
全新变量
全新创建适用于没有自带菜单的Avatar,例如Rusk。
步骤
在你的
菜单文件夹上单击右键,依次选择Create - VRChat - Avatars - Expression Parameters,创建一个变量组,并命名为BianLiang。
点击变量表里的
-将默认自带的三个变量删除,这些是用来控制表情的我们暂时用不上,可以安全的删除掉。
关于默认变量
请查阅官方文档,由于本教程目前用不上,可安全的删除掉。
选择角色,将
BianLiang拖入角色身上的VRC Avatar Descriptor组件Expressions中的Parameters目标框中。
双击进入编辑。
拓展变量
拓展菜单适用于已有自带菜单的Avatar,例如Manuka。
步骤
直接双击Parameters的目标框进入编辑。 
提醒
选中角色,在VRC Avatar Descriptor组件中的Expressions下,如果已有Menu和Parameters,则说明该模型已有变量组,直接在源文件上编辑即可。
编辑变量
在本教程的计算机变量基础中,我们举了一个生活例子,一个贴了标签的杯子。现在我们就要来为衣物贴上标签。
步骤
- 在
BianLiang中点击+号,Name即标签,我们填写YiWu(衣物),Type为Int(整数),Default为0,勾选Saved和Synced。
小知识
- Name:变量名,即变量的名称。
- Type:变量名中存储的数值类型,有Int(整数) Float(浮点数) 和 Bool(布尔值)。
- Default:变量名中存储的默认值,例如用于设置默认的衣物。
- Saved:保存变量数值。在游戏中切换世界或重启游戏后,如果
没有勾选这一项,你已设置好的衣物或饰品会被还原成默认值。 - Synced:网络同步。勾选了这一项
别人才能看见你的变化,否则只能本地(你自己)看见。
这是一个很灵活的选项,有一些运算可以放在本地,最后只用一个值同步给别人即可。当然这是进阶用法了,我们目前用不上。
双击我们在前面章节中创建的
衣物动画控制器:- 点击左上角的
Parameters按钮,这里还是空的。
我们需要把变量组中添加的变量一一对应添加过来。 - 我们的
YiWu的变量类型是Int,所以点击+按钮,选择Int,然后将变量名修改为YiWu。
注意
动画控制器中的
变量名称(Name)和变量类型(Type)一定要和你的变量组中目标变量(以后你可能会添加很多东西,有各种各样的变量,这里只拿衣物'YiWu'举例)包括大小写完全一致。- 点击左上角的
在
Any State上单击右键,点击Make Transition会引出一条线。点三次,将MoRen(默认),1(衣服1),2(衣服2)全部连接上。
我们为
YiWu这个变量名称创造了几个“路口”。现在我们需要来在“路口”上设置条件,来告诉YiWu该走哪条道:- 首先是
MoRen(默认)道,点击通往MoRen的这条道。在Inspector窗口中展开Settings,将Transition Duration(s)设置为0。
小知识
Transition Duration(s):动画过渡时间。由于我们做的是
切换功能,需要立即执行,所以改成0.- 在下方的
Conditions(条件)窗口下,点击+号创建一个条件。第1列选择我们的YiWu(衣物)变量名,第2列选择条件。
即:当YiWu中的数值比较(大于,小于,等于或不等于)第三列中的数值成立时,就走这一道。
这里我们选择Equals(等于)0。
小知识
- Greater:大于
- Less:小于
- Equals:等于
- NotEqual:不等于
- 我们这里的条件意思是:当
YiWu等于0时,就切换为默认衣服。
- 首先是
现在设置
第1件衣服,顺着默认衣服的条件思路:- 点击通往
1(第1件衣服)这条道。在Inspector窗口中展开Settings,将Transition Duration(s)设置为0。 - 在下方的
Conditions(条件)窗口下,点击+号创建条件:当YiWu等于1时,就切换为第1件衣服。
- 点击通往
设置
第2件衣服的条件:
配置好后,你已经完成了
90%的进度!但先别急,我们只是设置好了切换逻辑,现在我们要将他应用到我们的菜单。选择我们
衣物子菜单,选择默认选项,Parameter选择YiWu, Int,将Value设置为0。
提醒
这么设置完后,这个选项的作用是:将YiWu中存储的变量值更改为0,即换上我们的默认衣服。
- 选择
1(第1件衣服)选项,Parameter选择YiWu, Int,将Value设置为1。
提醒
设置完后,这个选项的作用是:将YiWu中存储的变量值更改为1,即换上我们的第1件衣服。
- 选择
2(第1件衣服)选项,Parameter选择YiWu, Int,将Value设置为2。
提醒
设置完后,这个选项的作用是:将YiWu中存储的变量值更改为2,即换上我们的第2件衣服。
最后来到
Hierarchy,选择我们角色身上的====衣服(如果你此前没有创建这个,在角色内创建一个空对象并重命名也可以),从Inspector中点击Add Component,添加MA Merge Animator。
接下来:
- 将我们的
衣物动画控制器拖放到MA Merge Animator组件中的要合并的Animator目标框中。 - 将
Layer类型选择为FX。 - 将
路径模式选择为绝对路径(基于Avatar的根对象)。 - 勾选
匹配Avatar的Write Default。
- 将我们的
运行
GestureManager,这时我们的切换衣物功能就生效了!
退出运行,将我们此前放在角色身上的
动画控制器清空:选择角色,左键单击一下Animator组件中的Controller目标框,然后按键盘Delete键清空。
测试模型
现在我们已经在Unity内模拟完成了模型的切换衣物功能,现在我们直接在游戏中运行,测试它是否正常。
注意
- 我们在
Unity中使用的GestureManager只是一个模拟器,并不能完全代表在游戏中运行的实际效果。 我们还是需要在游戏中测试模型。 本地构建仅用于测试模型,其他玩家是看不见你的模型的。
步骤
- 打开
VRChat Control Panel并登录。 - 将所有
六边形并且有Auto Fix按钮的警告,点击Auto Fix。
频繁出错点
- 只有同时满足
六边形和有Auto Fix按钮的警告,才需要点击Auto Fix。 - 其他的任何
黄色,白色警告的不需要点击!
修复后在下方
Build Type选择Build & Test Your Avatar。
点击
Build & Test按钮等待构建完毕,显示Succeeded后进入游戏。
游戏菜单中选择
角色 - SDK 测试角色,就能看见我们的模型了。套用以测试你的模型。
(可选步骤)可以看见我们的角色预览界面衣物重叠了。调整角色的衣物状态,将不必要的衣服关闭。多数情况下,游戏中的角色预览就是你在
Unity的Scene窗口看见的模样,可以关闭除你想看的以外的衣物,避免在游戏中预览角色时衣物重叠。

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