诊断代码

每一个 UDN 拒绝代码,触发它的原因,以及应该改写成什么。

更新于 2026-09-03

每次拒绝都带有稳定的 UDN 代码。普通的 C# 错误仍然保留 C# 编译器原本的 CS 代码。Udonite 在第一次拒绝之后会继续编译,因此一次编译就能列出该 behaviour 的所有问题。

代码 含义 怎么做
UDN0002 不支持的写法。Udonite 目前还编译不了。 换一种写法,或者带上这一行提交 issue;属于「暂时不支持」的拒绝会逐步解除。
UDN0003 不支持的类型。Udon 中没有对应表示的类型。 改用受支持的类型。数组是否受支持,取决于它的元素类型。
UDN0004 不支持的程序结构。整个类无法变成一个 Udon 程序(例如 Udon 无法承载的基类)。 按照提示信息的建议修改。
UDN0005 找不到 Udon extern。你调用的 Unity 或 .NET 成员不在 Udonite 已验证的 extern 列表里。 如果 Udon 确实暴露了它,提交 issue 就会加上。如果没有,提示信息会说明。
UDN0006 无法解析根基类。behaviour 继承了编译器看不到的东西。 检查基类能否编译,以及是否位于已引用的程序集中。
UDN0007 排除项格式错误。排除文件中的某一行无法读取。 修正或删除 ProjectSettings/ 中的那一行。
UDN0008 触及被排除的代码。参与编译的 behaviour 调用了你排除掉的脚本。 取消排除,或者去掉这个调用。
UDN0009 排除不完整。排除只覆盖了应覆盖范围的一部分。 排除整个文件夹,或整个脚本。
UDN0010 事件签名不匹配。重写的事件参数不对。 UdoniteBehaviour 上的签名保持一致。
UDN0011 没有 Udon 等价物。Udon 永远无法运行这个写法。 按提示信息给出的方式改写。
UDN0012 递归。方法直接或间接调用了自身。 改写成使用显式栈的循环。
UDN0013 堆溢出。程序需要的变量数量超过了 Udon 的上限。 拆分 behaviour,或减少大的常量数组。

UDN0002UDN0011 特意使用不同的代码。前者表示「暂时不行」,后者表示「永远不行」;知道是哪一种,你才能判断该等待还是该改写。

怎么读一条拒绝信息

Door.cs(14,9): error UDN0005: Udonite does not support 'UnityEngine.AudioListener.volume' yet. ...

文件名和位置精确指向那个表达式。提交 issue 时把整行原样贴上:它同时包含了具体写法和 Udonite 查找的 extern 签名,这就是补上支持所需的全部信息。

Something went wrong. Reload