如何解决Unity/C#中出现的Invalid Expression Term '='错误?
问题原因
C# 语法中没有 === 运算符,该运算符是 JavaScript 等语言的严格相等判断语法,你代码中两处 currentlydown === false、currentlydown === true 的写法不符合 C# 规范,就是触发 Invalid Expression Term "=" 报错的直接原因。
修正后的代码
bool currentlydown; // further up the script void Start() { currentlydown = false; } // later up the script void Update() { if ((Input.GetKeyDown("W") || Input.GetKeyDown("A") || Input.GetKeyDown("S") || Input.GetKeyDown("D")) && currentlydown == false) { anim.SetBool("Walking", true); currentlydown = true; } else if (!(Input.GetKeyDown("W") || Input.GetKeyDown("A") || Input.GetKeyDown("S") || Input.GetKeyDown("D")) && currentlydown == true){ anim.SetBool("Walking", false); currentlydown = false; } }
可选优化建议
因为 currentlydown 本身就是布尔类型,不需要显式和 true/false 做相等判断,可以简化写法:
- 把
currentlydown == false替换为!currentlydown - 把
currentlydown == true替换为currentlydown
简化后的判断逻辑如下:
if ((Input.GetKeyDown("W") || Input.GetKeyDown("A") || Input.GetKeyDown("S") || Input.GetKeyDown("D")) && !currentlydown) { anim.SetBool("Walking", true); currentlydown = true; } else if (!(Input.GetKeyDown("W") || Input.GetKeyDown("A") || Input.GetKeyDown("S") || Input.GetKeyDown("D")) && currentlydown){ anim.SetBool("Walking", false); currentlydown = false; }
内容的提问来源于stack exchange,提问作者Ruku
相关产品推荐
相关产品推荐

