参数类型不一致 (Expression Parameter Mismatch) 原文出处: https://notes.sleightly.dev/parameter-mismatching/ 译者注释 :Bool 布尔 (True/False) 译者注释 :Int 整数/整形 (0, 1, 2, 3, 4, 5...) 译者注释 :Float 浮点/ 小数 (0.13, 0.45, 0.255...) 译者注释 : 动画器参数 指的是 Animator 内的参数; Expression 参数 指的是 VRC Expression Parameter List 内的参数 在一般的 VRChat Avatars 3.0 创作过程中,VRChat Expression Parameters 的参数类型应该设置为与 Animator 内相同的类型( Bool 、 Int 、 Float )。 然而,Expression Parameters 和 Animator 参数之间的参数类型在不一致的情况下也仍能正常工作。这种行为因参数类型的不同而有所差异,具体如下所述。 一个标记为 Toggle 的参数被添加到 VRChat Expression Parameters 中,类型为 Bool 一个标记为 Toggle 的参数被添加到 local Animator 参数中,类型为 Float 已知互相兼容的参数类型及其行为 Expression Parameter Bool 动画器参数 → Expression 参数 Expression Bool = False Expression Bool = True Bool → Bool Bool = False Bool = True Bool → Int Int = 0 Int = 1 Bool → Float Float = 0.0 Float = 1.0 Expression Parameter Int 动画器参数 → Expression 参数 行为 Int → Bool 任何大于 0 的 Int 值将使 bool 为 True Int → Int 预期行为 Int → Float 直接转换:例如  Int = 2 → Float = 2.0 Expression Parameter Float 动画器参数 → Expression 参数 行为 Float → Bool 任何大于 0 的 Float 值将使 bool 为 True Float → Int 四舍五入转换:≥ 0.5 → 1 ; < 0.5 → 0 Float → Float 预期行为 为什么 Avatar 参数类型之间互相兼容? Unity Animators 在 C# 后端使用浮点数处理参数,而 VRChat 则使用 SBytes 代替 bool、int 或 float。 Animator 和 VRCSDK 通过允许你从界面中选择参数类型来优化用户体验。 如果这样来看的话,参数并不是被转换,而是 不一致 。 这种不一致的兼容性同样适用于 VRChat 的 内置参数 。 目前,AV3 Emulator 和 GestureManager 已经实现了模拟参数类型兼容的功能。