Unity 2022出现CS1525与CS8400错误,求技术解决方案
问题解决:Unity中CS1525和CS8400错误
错误原因
你使用的if (sr is { Length: > 0 })是C# 9.0引入的关系模式语法,但当前项目的C#语言版本设置为8.0或更低,编译器不支持该特性,因此抛出这两个错误。
解决方案
方案1:升级项目的C#语言版本
- 打开Unity项目,依次点击
Edit > Project Settings - 在弹出窗口中选择
Player选项卡,展开Other Settings - 找到
Configuration区域的Scripting Runtime Version,设置为.NET 4.x Equivalent或更高版本 - 在同区域找到
Scripting Language Version,选择C# 9.0或更高版本 - 重启Unity和Visual Studio后重新编译项目
方案2:修改代码兼容低版本C#
如果不想升级语言版本,将关系模式语法替换为C# 8.0及以下支持的写法:
原代码:
if (sr is { Length: > 0 })
可替换为以下两种写法之一:
// 写法1:先判空再判断长度 if (sr != null && sr.Length > 0) // 写法2:C# 8.0支持的模式匹配判空写法 if (sr is not null && sr.Length > 0)
完整修改后的代码示例:
if (layeredBlock == null || !layeredBlock.AnyLayersExist()) { if (sr != null && sr.Length > 0) { LevelManager.Instance.DestroySpriteEvent(sr[0].sprite, transform.position, this, null); } }
内容的提问来源于stack exchange,提问作者Hossam Ahmed
相关产品推荐
相关产品推荐

