如果其他人表现得非常怪异和崩溃



编辑我定义的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;
}

最新更新