| 番号 | 意味 | 説明 |
|---|
TUKI0001 | この言語が対応していない形 | C# としては正しいが、実行環境に対応する仕組みが無い。最も多く出る番号で、代わりの書き方は各ページの「非対応」の表にある |
TUKI0099 | コンパイルできない構文 | 構文としては受理できるが、Udon の命令へ変換する手段が無い。TUKI0001 と一緒に出ることが多い |
TUKI0101 | 実行環境に無い呼び出し | 呼ぼうとしたメソッドが、Udon に存在しない |
TUKI0102 | 実行環境に無い型 | 変数の型が、Udon に存在しない |
TUKI0103 | 同期できない型 | [UdonSynced] を付けた変数の型が、同期の対象にならない(同期) |
TUKI0106 | 補間できない型 | [UdonSynced(UdonSyncMode.Linear)] などを、間の値を作れない型に付けている(同期) |
TUKI0108 | メソッドを値として持つ形 | デリゲートとラムダ。Udon に関数の値が無い。型・生成・呼び出しのどこに書いても、同じ理由でエラーになる |
TUKI0109 | 1 ファイルに 2 つ以上のプログラム | 1 つのファイルが 1 つのプログラムになる(ファイル構成と名前空間) |
TUKI0110 | 同期を付けられないフィールド | [UdonSynced] を const・static・readonly のフィールドに付けている(同期) |
TUKI0112 | リアクティブの依存の循環 | 依存が一周しているため、更新の順序が決まらない(リアクティブプログラミング) |
TUKI0114 | テストの外の確認用の呼び出し | Assert と Mimic は [TsukimiTest] を付けたメソッドの中でだけ書ける。Mimic.Explore() はさらに、テストの最初の文でなければならない(テスト) |
TUKI0201 | null 安全の違反 | #nullable enable を書いた範囲でだけ出る。C# なら警告で済むものを、ここではエラーにしている(null と参照) |
| 番号 | 意味 | 説明 |
|---|
TUKI0104 | 変数の格納先が足りない | 1 つのプログラムが使える変数の数には上限がある |
TUKI0105 | 型引数の展開が多すぎる | ジェネリックへ渡した組み合わせが多すぎて、展開しきれない |
TUKI0107 | 同期の方式と変数の矛盾 | [UdonBehaviourSyncMode] の指定と [UdonSynced] の付け方が噛み合っていない |
TUKI0117 | テストがワールドに含まれるファイルにある | [TsukimiTest] を本体側のファイルに書いている。そのメソッドはワールドに含まれるプログラムに入り、エントリポイントとして公開される。コンパイルは通る(停止しない) |
TUKI0202 | 常に同じ結果になる null 比較 | 値型と null を比べている。コンパイルは通る(停止しない) |
TUKI0203 | object から値型を取り出している | 取り出しに変換が 1 本かかる。コンパイルは通る(停止しない) |
TUKI0204 | 2 次元配列の費用 | 要素を 1 個ずつボックス化して出し入れする形になる。コンパイルは通る(停止しない) |
TUKI0116 | 予約された名前 | __ で始まる名前と、書いたイベントの引数を受け取るヒープ変数の名前(OnPlayerJoined なら onPlayerJoinedPlayer)はコンパイラが自分のヒープ変数に使う。フィールドの名前を変えれば直る |
TUKI0120 | 焼き込めないモデル | 学習済みモデルが、コンパイルの時点で焼き込める範囲の外にある。直すのはモデルを書き出した側の設定で、C# を書き直しても直らない(ONNX モデル(試験中)) |
TUKI0121 | シェーダに書けない名前 | GPU で動く部分(カーネルと、そこから呼ぶメソッド、その引数とローカル変数)の名前に、半角の英数字と下線以外が入っている。名前を付け直せば直る(Udon 側に残るメソッドやフィールドの名前は自由) |
TUKI0111 | 変化の伝播を組み立てられない | リアクティブの属性は読めたが、変化を伝える処理を 1 つも置けなかった。効果は自動では実行されない(リアクティブプログラミング) |
TUKI0113 | どこからも実行されない効果 | その効果のトリガーが、どのエントリポイントでも変わらない。コンパイルは通る(停止しない) |
TUKI0115 | 同期するフィールドに付いた属性 | 届いた値では効果が実行されない(伝播が入るのは値を書いたエントリポイントだけ)。コンパイルは通る(停止しない) |
TUKI0119 | 起動時に 1 回だけ実行される効果 | 依存を書くエントリポイントが 1 つも見つからないため、そのあと依存が変わっても実行されない。コンパイルは通る(停止しない) |
TUKI0901 | コンパイラの内部エラー | 書いたコードの誤りではない。同じコードが正しいこともあるので、書き直しても直るとは限らない |
TUKI0902 | 解析の失敗 | 解析が途中で失敗した。結果が空でも、その危険が無いという意味にはならない |
TUKI0903 | 出力したプログラムに無い名前の呼び出し | コンパイル結果のプログラムが、この環境の Udon API に存在しない名前を呼んでいる。書いたコードの中には出てこない名前 |
「非対応」の表の「理由」の列は、この 4 語のどれかです。将来対応される見込みがあるかどうかを表します。
- 環境: 実行環境に仕組みが無い。実行環境が変わらない限り書けない
- 設計: 仕組みはあるが、この言語では対応しないと決めた。これからも対応しない
- 未実装: 対応する方向だが、まだ実装していない。変わりうる
- 未定: どうするか決めていない
| |
|---|
| 型が無いとき | この環境が公開しているのは Unity と VRChat の型の一部で、そこに無い型を変数に書くと TUKI0102 のエラーになります |
| 呼び出しが無いとき | 型があっても、その中の呼び出しが全部あるとは限りません。公開されていない呼び出しは TUKI0101 のエラーになります |
| 一覧の所在 | この文書には含めません。Unity の型は Unity のスクリプトリファレンスに、VRChat の型は VRChat の制作者向けドキュメントにあります |