编辑我定义的ANIM_MEDIATON="冥想;但它认为ANIM_;罢工;我不知道为什么。
所以我要改变我的问题。尽管我定义了
[HideInInspector] public string ANIM_MEDITATION = "Meditation";
当我在Awake中记录ANIM_MEDIATION时;罢工;
我创建了一个行为怪异的if-else块。
当我这样写的时候,实际上还有更多的if else条件,但主要逻辑是这样的,它不会进入第三个if
public void UpdateAnimationTimes()
{
AnimationClip[] clips = animator.runtimeAnimatorController.animationClips;
foreach (AnimationClip clip in clips)
{
if (clip.name == "Ledge Climb")
{
animLedgeClimbTime = clip.length;
}
else if (clip.name == "Meditation")
{
animMeditationTime = clip.length;
}
// DOES NOT ENTER HERE?!
else if (clip.name == "Strike" )
{
animStrikeTime = clip.length;
}
else if (clip.name == "Strike 2")
{
animStrike2Time = clip.length;
}
}
}
但它是这样工作的!我唯一做的就是更改if订单
public void UpdateAnimationTimes()
{
AnimationClip[] clips = animator.runtimeAnimatorController.animationClips;
foreach (AnimationClip clip in clips)
{
/// ENTERS HERE!!!!
if (clip.name == "Strike")
{
animStrikeTime = clip.length;
} else if (clip.name == ANIM_LEDGE_CLIMB)
{
animLedgeClimbTime= clip.length;
}
else if (clip.name == "Meditation")
{
animMeditationTime = clip.length;
}
else if (clip.name == "Strike 2")
{
animStrike2Time = clip.length;
}
}
}
我建议您使用switch case语句,并在每个案例上放置一个brackpoint以清楚地看到:
switch (clip.name)
{
case ANIM_STRIKE:
animStrikeTime = clip.length;
break;
case ANIM_LEDGE_CLIMB:
animLedgeClimbTime = clip.length;
break;
case ANIM_MEDITATION:
animMeditationTime = clip.length;
break;
case ANIM_STRIKE_2:
animStrike2Time = clip.length;
break;
default:
//default
break;
}