如果函数在 Animator 中带有参数

If function with parameters inside Animator

我尝试制作一个 if 语句,当动画器内部的参数达到某个值时该语句开始工作。但我不知道如何通过脚本访问这些参数。我尝试了几件事(PlayerMovement 是 public 动画师):

if (PlayerMovement.Parameter("PlayerDayDreaming" = 1f))
{
Debug.Log("Switch Scene");
}

if(Playermovement.Parameters.Daydreaming == 1f)
{
Debug.Log("Switch Scene");
}

还有几个看起来很喜欢,但我就是想不出来。有人知道怎么做吗?

编辑:我添加了截图

如果Animator有字段Parameters我不熟悉。我知道它有一个参数数组 paramaters. Generally, when trying to get a specific parameter field, you would use GetBool, GetInteger 或与您的特定参数字段类型对应的任何对应项。

如果Parameters字段在您使用的Unity版本中存在,那么您可以继续使用它。评论中指出的代码中的另一个错误是您当前在 if 条件中使用赋值运算符 (=) 而不是比较运算符 (==),它应该始终 return true 因为分配应该成功。最后一个问题是您直接比较浮点数,由于浮点精度可能会出现问题。我用 Mathf.Approximately 来解决这个问题。

使用基于参数类型和固定条件的参数检查,代码应如下所示:

if(Mathf.Approximately(PlayerMovement.GetFloat("PlayerDayDreaming"), 1f))
{
    Debug.Log("Switch Scene");
}