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

Unity3d启用C#9后使用record类型仍出现编译错误求助

Unity中使用C# record类型解决IsExternalInit编译错误的方法

你在Unity启用C# 9后使用record类型时遇到的编译错误,本质是因为record依赖的init-only setter语法需要System.Runtime.CompilerServices.IsExternalInit这个标记类型,但该类型只在.NET 5及以上版本中存在,而Unity目前不支持这些高版本.NET,所以得手动补全这个类型来绕过限制。

具体解决步骤:

  • 在Unity项目的任意代码目录下新建一个C#脚本,命名为IsExternalInit.cs
  • 将以下代码粘贴到脚本中:
namespace System.Runtime.CompilerServices
{
    public class IsExternalInit { }
}
  • 保存脚本,回到Unity等待编译完成,此时record相关的编译错误就会消失

这个空类只是一个编译器需要的标记,不需要任何额外实现,它的作用是让C#编译器认为IsExternalInit类型已存在,从而正常解析record的语法。Unity的C# 9支持已经包含了record的核心特性,只是缺失这个标记类而已。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:18:20