如何修复Unity中C#的CS0165:使用未赋值局部变量错误?
解决Unity CS0165未赋值局部变量错误
CS0165错误的核心是局部变量state在部分代码路径下未赋值就被调用。看你的代码逻辑:
MovementState state; if (horizontalInput > 0f) { state = MovementState.Running; } else if (horizontalInput < 0f) { state = MovementState.Running; } anim.SetInteger("state", (int)state);
当horizontalInput等于0时,if和else if的条件都不成立,state变量全程没有被赋值,此时执行anim.SetInteger就会触发该错误。
修复方案
有两种简单的修复方式:
方式1:声明变量时直接赋默认值
// 默认设置为Soldier状态,覆盖所有未触发移动的场景 MovementState state = MovementState.Soldier; if (horizontalInput != 0f) { state = MovementState.Running; } anim.SetInteger("state", (int)state);
方式2:补充else分支处理静止场景
MovementState state; if (horizontalInput > 0f || horizontalInput < 0f) { state = MovementState.Running; } else { // 当没有水平输入时,切换回Soldier状态 state = MovementState.Soldier; } anim.SetInteger("state", (int)state);
额外优化提示
你当前的代码只通过水平输入切换动画,如果需要垂直移动也触发跑步动画,可以把判断条件改成:
if (horizontalInput != 0f || verticalInput != 0f)
内容的提问来源于stack exchange,提问作者Mr. Slime
相关产品推荐
相关产品推荐

