参数类型不一致 (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 已经实现了模拟参数类型兼容的功能。
No Comments