如果函数在 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");
}
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");
}