Diagnostics
Every UDN refusal code, what triggers it, and what to write instead.
Every refusal has a stable UDN code. Plain C# errors keep their normal CS codes from the C# compiler. Udonite keeps going after the first refusal so one compile shows every problem in a behaviour.
| Code | Meaning | What to do |
|---|---|---|
UDN0002 |
Unsupported construct. Udonite does not compile this yet. | Rewrite around it, or open an issue with the line; "not yet" refusals get lifted. |
UDN0003 |
Unsupported type. A type Udon has no representation for. | Use a supported type. An array is supported exactly when its element type is. |
UDN0004 |
Unsupported program shape. The class as a whole cannot become one Udon program (for example a base type Udon cannot host). | Follow the guidance in the message. |
UDN0005 |
No Udon extern. Udon does not register the Unity or .NET member you called. | Use a member Udon exposes. If you believe Udon does register it, open an issue quoting the signature from the message. |
UDN0006 |
Unresolved root base type. The behaviour derives from something the compiler cannot see. | Check the base class compiles and is in a referenced assembly. |
UDN0007 |
Malformed exclusion. An entry in the exclusions file cannot be read. | Fix or remove the line in ProjectSettings/. |
UDN0008 |
Excluded code reached. A compiled behaviour calls into a script you excluded. | Un-exclude the script, or remove the call. |
UDN0009 |
Split exclusion. An exclusion covers only part of what it must. | Exclude the whole folder or the whole script. |
UDN0010 |
Event signature mismatch. An event override has the wrong parameters. | Match the signature on UdoniteBehaviour. |
UDN0011 |
No Udon equivalent. Udon can never run this. | Write it the way the message suggests. |
UDN0012 |
Recursion through a delegate. Direct and mutual recursion compile; a cycle that passes through a delegate call has no known target to spill for. | Call the method directly inside the cycle, or rewrite it as a loop. |
UDN0013 |
Heap overflow. The program needs more variables than Udon allows. | Split the behaviour, or reduce large constant arrays. |
UDN0002 and UDN0011 are deliberately different codes. One means "not yet", the other means "never"; knowing which tells you whether to wait or to rewrite.
Reading a refusal
Door.cs(14,9): error UDN0005: Udonite does not support 'System.IO.File.ReadAllText'. It looked for the Udon extern 'SystemIOFile.__ReadAllText__SystemString__SystemString', and Udon does not register one under that name. Udon exposes a fixed set of methods rather than all of .NET, so a member that compiles in ordinary C# is not always callable from a world.
The file and position point at the exact expression, and the message names the Udon extern signature Udonite looked for. If Udon does register that signature, paste the whole line into an issue — it is everything needed to add support. If Udon does not register it, no release of Udonite can reach that member and the code has to be written another way.