我的左手和右手都有动画师。我制作了左控制器,将其复制并重命名为右,然后修改了右手动画(而不是左手动画)的阶段。然后,我使用连接到右手和左手gameObject上的完全相同的代码来获取动画师,并将动画师的“ HandPosition”整数设置为枚举值“ open”或“ shield”等。右手的“手位置”将更新该值,而左手的将不更新。它永远保持为零。显然,每只动画器的“ Controller”值分别设置为动画器控制器的Left和Right版本。为什么一个整数会更新,而另一个整数不会更新?它们被复制,运行相同的代码,甚至没有出错。我可以运行以下代码,一只手将显示它已更新,另一只手将显示它已更新为“ 2”,然后新值仍为“ 0”。我没主意了!
Debug.Log("Setting " + hand + " to position " + handPosition + "(" + (int)handPosition + ")");
animator.SetInteger("HandPosition", (int)handPosition);
Debug.Log("New position is " + animator.GetInteger("HandPosition"));
答案 0 :(得分:0)
显然,当您输入虚假的整数名称时,甚至在动画师脚本中甚至没有控制器试图获取整数名称时,也不会出错。有趣的“功能” ...因此,就我而言,我的对象上显然有第二个动画制作器,而我却不知道,并且代码正在捕获那个动画制作器,而不是我正确设置的那个动画制作器,并且默默地找不到任何内容。我在找。