診断コード
すべての UDN 拒否コードと、何が原因で出るのか、代わりに何を書けばよいか。
拒否には必ず安定した UDN コードが付きます。素の C# のエラーは、C# コンパイラ本来の CS コードのままです。Udonite は最初の拒否で止まらずに続行するため、一度のコンパイルでそのビヘイビアの問題がすべて出ます。
| コード | 意味 | どうするか |
|---|---|---|
| UDN0002 | 未対応の構文。Udonite がまだコンパイルできません。 | 別の書き方に変えるか、その行を添えて Issue を立ててください。「まだ」の拒否は解除されていきます。 |
| UDN0003 | 未対応の型。Udon に対応する表現がない型です。 | 対応している型を使ってください。配列は、要素の型が対応していれば対応しています。 |
| UDN0004 | 未対応のプログラム構造。クラス全体を一つの Udon プログラムにできません(Udon が扱えない基底型など)。 | メッセージの指示に従ってください。 |
| UDN0005 | Udon extern がありません。呼び出した Unity や .NET のメンバーを Udon が登録していません。 | Udon が公開しているメンバーを使ってください。登録されているはずだと思う場合は、メッセージにあるシグネチャを添えて Issue を立ててください。 |
| UDN0006 | ルート基底型を解決できません。コンパイラから見えないものを継承しています。 | 基底クラスがコンパイルでき、参照済みアセンブリにあるか確認してください。 |
| UDN0007 | 除外指定が壊れています。除外ファイルの行を読み取れません。 | ProjectSettings/ の該当行を直すか削除してください。 |
| UDN0008 | 除外したコードに到達しました。コンパイル対象のビヘイビアが、除外したスクリプトを呼んでいます。 | 除外を解除するか、その呼び出しを消してください。 |
| UDN0009 | 除外が中途半端です。除外が必要な範囲の一部しか覆っていません。 | フォルダ全体、またはスクリプト全体を除外してください。 |
| UDN0010 | イベントのシグネチャ不一致。override したイベントの引数が違います。 | UdoniteBehaviour 側のシグネチャに合わせてください。 |
| UDN0011 | Udon に相当するものがありません。Udon では決して実行できません。 | メッセージが示す書き方に変えてください。 |
| UDN0012 | デリゲートを経由する再帰。直接の再帰や相互再帰はコンパイルできますが、デリゲート呼び出しを含む循環には退避先を決められる呼び出し先がありません。 | 循環の中ではメソッドを直接呼ぶか、ループに書き換えてください。 |
| UDN0013 | ヒープ超過。Udon が許す数より多くの変数が必要です。 | ビヘイビアを分割するか、大きな定数配列を減らしてください。 |
UDN0002 と UDN0011 はあえて別のコードにしています。前者は「まだ」、後者は「決して」です。どちらかが分かれば、待てばよいのか書き換えるべきなのかが判断できます。
拒否の読み方
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.
ファイル名と位置は、その式そのものを指しています。メッセージには Udonite が探した extern のシグネチャが入っています。そのシグネチャを Udon が実際に登録しているなら、この行をそのまま Issue に貼ってください。対応を追加するのに必要な情報がすべてそろいます。Udon が登録していない場合は、どのバージョンの Udonite でもそのメンバーには到達できないため、コードを別の書き方にする必要があります。