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

Unity/C#中If语句始终为true的问题排查求助

问题描述

原本计划基于working布尔值与按键输入编写条件判断,却发现所有If语句始终返回true。尝试了多种条件:

  • 基于float变量(如示例中的speed >= 500f)
  • 基于布尔值
  • 基于碰撞检测
    均出现同样问题,即使移除speed的public修饰符也无法解决。附上完整代码,请求排查原因。

完整代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class player : MonoBehaviour
{
    float speed;
    bool working = false;
    
    // Start is called before the first frame update
    void Start()
    {
        speed = 3f;
    }

    // Update is called once per frame
    void Update()
    {
        Vector3 playerInput = new Vector3(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"), 0);
        transform.position = transform.position + playerInput.normalized * speed * Time.deltaTime;
        
        if(speed >= 500f)
        {
            print("test");
        }
    }
    /*void OnTriggerEnter2D(Collider2D other) {
        if(other.tag == "Skill")
        {
            //skilling = true;
        }
        else skilling = false;
    }*/
}
问题原因排查与解决

从给出的代码来看,speed初始值设为3f,且没有任何逻辑修改它的值,理论上speed >=500f不可能为true。出现你描述的问题,大概率是以下原因:

  1. Inspector面板数值覆盖

    • 如果之前speed是public修饰符时,你在Unity Inspector面板中给它设置过≥500的数值,即使后来改成private,Unity的序列化缓存可能会保留这个值,覆盖Start()里的初始赋值。
    • 解决:选中挂载player脚本的对象,临时给speed加上[SerializeField]让它在Inspector显示,右键变量选择Reset,或者删除场景/预制体中该对象的序列化数据后重新挂载脚本。
  2. 运行时意外修改数值

    • 测试过程中可能不小心在Unity的Console面板、运行时模式的Inspector面板中修改了speed的数值,导致它≥500。
    • 解决:停止运行后重新启动Play模式,或者在Update()开头加一行Debug.Log(speed),实时查看speed的实际值,确认是否被意外修改。
  3. Unity编译缓存问题

    • 有时候Unity的编译不彻底,旧的代码逻辑(比如之前有自动增加speed的代码)没有被替换,导致speed不断变大。
    • 解决:点击Unity顶部菜单栏的Assets → Reimport All,或者删除项目的Library文件夹后重新打开项目(注意备份),强制重新编译所有代码。
  4. 代码逻辑遗漏

    • 你提到的working布尔值、按键输入相关的逻辑在当前代码中没有体现,可能之前的代码中有修改speed或working的逻辑,现在被删除或注释,但残留的逻辑仍在生效。
    • 解决:检查项目中是否有其他脚本修改了该对象的speed变量,或者恢复之前的完整代码片段进行排查。

内容的提问来源于stack exchange,提问作者PapaNoahh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:35:31