You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 18:58:28