Skip to main content

教程

没有图片这回事真的很私密马赛!本文最初是一个视频教程的文案,但我一直抽不出时间去录制这个教程!你可以点进我的油管频道以观看其他教程。

开始使用

首先,你需要从 Gumroad 下载一个工具。在付款框中输入“0”,下载并导入 unitypackage。如果 VRChat SDK 出于某种原因或更新导致此了工具的损坏,我会在油管视频下方提供一个链接,向你展示如何以最普遍且繁琐的方式创建开关 。

我还想提一嘴另外一个插件,这俩本质上做的是同样的事情,只不过后者可选项更少些,外加这插件在我这边好像不起作用(它可以正常关闭物体,但没法再次把它打开)。当然你可以自己试试。

接下来的这些额外内容都是选修,当然我仍然建议你去安装它们。你可能会用到 Avatar 3.0 Emulator,以便在上传虚拟形象之前测试并确保开关在 Unity 中能够正常工作。你可以从 GithubBooth 上获取它。我还建议你去整一个这个简单的插件,它可以给为你的 VRC 表达参数Expression Parameters 和 VRC 表达菜单Expression Menu 资产提供自定义图标。这里还有一包免费图标。最后推荐一个编辑器脚本,只需将其放置在项目中的任何位置上,它就可以在你按下播放按钮时自动切换到场景视图。你可以通过转到 Tools>Switch To Scene View On Play 来开启和关闭该功能。

简单开关

在场景中已准备好一个虚拟形象,为了不干扰当前的虚拟形象项目的情况下,我会创建一个副本。要想创建一个副本为了复制虚拟形象,首先选择你的虚拟形象对应的游戏对象(Game Object),按住 ctrlCtrl 键并单击箭头将其移到后方,然后 Ctrl + D 复制它,然后将其移到前方。与此同时将“toggles”附加(append)到复制体在副本的名称末尾附加“toggles”

我还此外,需要确保我复制效果层(effects layer)、Expression Menu 和 Expression Parameters 。Parameters。虚拟形象后,下滑动至 FX layer,单击鼠标单击它,按 Ctrl + D,然后点击 F2 重命名再将其拖回 FX slot。对 Expression Menu 和 Expression Parameters 的操作。

如果你的模型没有 Expression Menu 或 Expression Parameters,以通过在项目选项卡(project tab)中右键单击转到 Create>VRChat>Avatars 来创建它们值得注意的是,使用自定义 Expression Menu 将删除默认的 emotes menu,届时你因此需要创建一个看起来像这个类似于 emotes menu 的新子菜单来恢复它替代

开关的工作方式原理是:当你在转盘菜单中按下按钮时,它们会播放动画。如果对象(object)处于开启状态会播放一个关闭对象(object)的动画,反之亦然。虽然这个工具会自动为我们生成动画,但我们需要创建一个额外文件夹来存储它们可以在项目中找到一位置(例如您的模型也许可能有的 animations 文件夹),右键单击空白,创建>文件夹(Create>Folder),然后文件夹重命名为 Toggles。

在这个项目中我有两个不同的虚拟形象,所以因此在我的 toggles 文件夹中有两个子文件夹,每个虚拟形象一个。

单击你希望在游戏中启和关闭对象(object)只需单击对象确保它在层级窗口(hierarchy)选中要想启用此工具然后转到“tools”菜单并单击“toggle creator”。由于我们已经在层级窗口(hierarchy)中选相应对象(object)因此它所以工具会自动为我们填充虚拟形象和附件对象(accessory object)

或者另外,你可以在层级窗口(hierarchy)中右键单击要切换的游戏对象(Game object),然后单击选择“advanced toggle”或“toggle”。

值得注意的是,你可以在新窗口中试着悬停在每个标签上悬停鼠标此操作会弹出文本来告诉你每以查看各个选项的功能说明

我希望自动生成的按钮会出现在 expressions menu 菜单中的新子菜单中。所以要实现这一点,点击下拉菜单旁边的 + 图标,创建一个新的 expressions menu slot。菜单槽。我将这个按钮称之命名为“clothes”,并将子菜单放在按钮文件夹下。你可以主菜单以更改子菜单的图标。

按钮创建按钮的步骤如下

  1. expressions 菜单下拉菜单的 parameters 部分的 expressions menu 下拉菜单中,选择我们为按钮创建的子菜单。
  2. 在菜单中输入按钮名称,这将同时填充参数(parameter)名称。
  3. 通过单击输入框右侧的圆圈来选择菜单图标,弹出通过纹理搜索(texture search),来选择或者从项目窗口(project tab)中拖图片到框中。这个于我选择的“clothes”按钮,我搜索并选择前者的方法并搜索消音(muffler)图标,因为此虚拟形象附带有了一个消音(muffler)图标。
  4. 对于对象(也就是消音 muffler),如果我关闭它,我希望关闭时跑到世界或切换回虚拟形象时场景中保持关闭状态,所以我会保持此开关的 safe state 处于开关设为开启状态
  5. 我还希望它成为虚拟形象重新加载时默认选择关闭的所以因此会保持此开关的 default state 处于设为开启状态
  6. 我希望选择新动画文件夹于我创建的文件夹中,所以我选择通过下拉菜单导航到那个文件夹
  7. 单击“create simple toggle”即可完成!

预览按钮在 Unity 中预览此按钮的效果

  1. 转到“工具(tools)”tools”菜单,
  2. 单击 Gesture Menu Emulator,
  3. 然后单击“play”。
  4. 选择“gesture manager prefab”,
  5. 确保控制虚拟形象(controlling avatar)已设置为您放置按钮的那个虚拟形象。
  6. 然后按照游戏中相同的方式开 expressions menu。 如果菜单。在 Unity 工作那么它这个按钮也应在 VRChat 中工作生效

如果在创建按钮时搞砸错误你应该可以使用 toggle remover,转到 Tools>toggle remover。这自动执行删除过程。

高级按钮

但是,如果想要的不仅仅是打开或关闭对象物体呢?这就是高级按钮派上发挥作的时候。

这个虚拟形象角色穿着一件夹克,穿一件衬衫。衬衫有一个用于在打开夹克时挤压袖子,在关夹克时张开的 blendshape。我想为夹克创建一个开关按钮,可以同时做到控制衬衫的 blendshape。

为此,

  1. 右键单击 jacketOpen 对象,
  2. > create advanced toggle,创建高级切换按钮,
  3. 然后在弹出的新窗口中,在 animations “动画”下方击 + 按钮,
  4. 搜索我想改的 blendshape 名称,在本次案例中,blendshape 名为“Shirt.sleeveSqueeze”,可以简单搜索“squeeze” 以寻这个 blendshape。
  5. 然后启用 Generate Off Animation;“生成关闭动画”;
  6. 当 blendshape 设置为100 时,袖子挤压当它设置为 0 时,袖子张开。在 animation 动画中,夹克打开时 blendshape 值保持在100,夹克关闭时更改 blendshape 值更改为0。

这只是区区一个高级按钮的可以使用这个工具创建许多其他内容,例如使用一个按钮在 expressions menu 表达式菜单同时控制多个对象的不同物体的套装!