トラブルシューティング
UdonEmu でよくあるエラー・問題と解決策をまとめています。
エラーメッセージで検索
このページで Ctrl+F(Command+F on Mac)を使って、エラーメッセージを検索してください。
セットアップ関連
❌ メニューに「HoshinoLabs」が表示されない
原因:UdonEmu が正しくインストールされていない
対処:
- インストール手順 を再確認
- Unity を再起動してメニューを再読み込み
- Package Manager で UdonEmu が表示されているか確認
Packages/com.hoshinolabs.udonemuフォルダが存在するか確認
❌ NullReferenceException at typeResolver または programDescriptor
エラーメッセージ例:
NullReferenceException: Object reference not set to an instance of an object
HoshinoLabs.UdonEmu.Udon.UdonAssemblyAssembler.TryAssembleProgram
原因:
typeResolverまたはprogramDescriptorがnull
対処:
- Sardinject が導入されているか確認(インストール)
[SerializeField]属性が正しく付いているか確認[SerializeField, HideInInspector]
UdonTypeResolver typeResolver;- Unity を再起動してみる
- UdonSharp のコンパイルエラーがないか確認
参考:
❌ NullReferenceException at vm.AssignProgramAndVariables
エラーメッセージ例:
NullReferenceException: Object reference not set to an instance of an object
ExampleUdonEmu.ExecuteUdonAssembly (vm.AssignProgramAndVariables)
原因:
vmフィールドが設定されていない
対処:
- Inspector で
vmフィールドにUdonEmuを設定したか確認 UdonEmuコンポーネントが同じ GameObject にアタッチされているか確認- SerializeField 属性が付いているか確認
[SerializeField]
UdonEmu vm;
参考:
UdonAssembly の実行関連
❌ Failed to assemble UdonProgram
エラーメッセージ例:
Failed to assemble UdonProgram
原因:
- UdonAssembly のテキスト形式に構文エラーがある
対処:
.data_start/.code_startのスペルを確認.exportでエントリポイントを宣言しているか確認.export _startEXTERNの関数名が正しいか確認EXTERN, "UnityEngineDebug.__Log__SystemObject__SystemVoid"- カンマ(
,)が正しく入っているか確認 - 命令のオペランド(引数)が不足していないか確認
参考:
❌ Failed to assemble UdonVariableTable
エラーメッセージ例:
Failed to assemble UdonVariableTable
原因:
- 変数定義(
.data_start〜.data_end)に構文エラーがある
対処:
.data_start/.data_endのスペルを確認- 型名が正しいか確認(
%SystemString,%SystemInt32等) - 定数の値が型に合っているか確認
// ✅ 正しい
message: %SystemString, "Hello"
count: %SystemInt32, 42
// ❌ 間違い
message: %SystemString, 42 // 型が合わない
参考:
❌ Console に何も表示されない(イベントが実行されない)
原因:
- イベント名が
.exportで宣言されていない InitializeUdonContent()を呼び忘れている- イベント名の大文字小文字が一致していない
対処:
RunProgram("_greet")のイベント名が、.exportで宣言した名前と 完全に一致しているか確認.code_start
.export _greet // ← この名前と
vm.RunProgram("_greet"); // ← この名前が一致InitializeUdonContent()を呼んでいるか確認vm.AssignProgramAndVariables(program, variables);
vm.InitializeUdonContent(); // ← 必須
vm.RunProgram("_greet");- Console のエラーログを確認(他のエラーが出ていないか)
参考:
❌ InitializeUdonContent() を呼び忘れた
エラーメッセージ例:
NullReferenceException が RunProgram 実行時に発生
原因:
InitializeUdonContent()を呼ばずにRunProgram()を実行した
対処:
// ❌ 間違い
vm.AssignProgramAndVariables(program, variables);
vm.RunProgram("_greet"); // エラー!
// ✅ 正しい
vm.AssignProgramAndVariables(program, variables);
vm.InitializeUdonContent(); // ← 必須
vm.RunProgram("_greet");
参考:
変数の読み書き関連
❌ Could not find symbol(変数が見つからない)
エラーメッセージ例:
Could not find symbol XXX.
原因:
- 変数が UdonAssembly で宣言されていない
- 変数名のスペルミス
対処:
- UdonAssembly で変数が宣言されているか確認
.data_start
myVariable: %SystemInt32, 0 // ← 宣言が必要
.data_end - 変数名のスペルを確認(大文字小文字を含めて完全一致)
TryGetUdonProgramVariableを使って安全に取得if (vm.TryGetUdonProgramVariable("myVariable", out var value)) {
Debug.Log(value);
} else {
Debug.LogWarning("Variable not found");
}
参考:
❌ InvalidCastException(型が合わない)
エラーメッセージ例:
InvalidCastException: Cannot cast from source type to destination type.
原因:
GetUdonProgramVariableで取得した値を誤った型にキャストしている
対処:
- UdonAssembly での型宣言を確認
.data_start
count: %SystemInt32, 0 // ← Int32
message: %SystemString, null // ← String
.data_end - キャストを型に合わせる
// ✅ 正しい
var count = (int)vm.GetUdonProgramVariable("count");
var message = (string)vm.GetUdonProgramVariable("message");
// ❌ 間違い
var count = (string)vm.GetUdonProgramVariable("count"); // int を string にキャスト不可
参考:
❌ 変数が null になる
原因:
- 変数に初期値が設定されて いない
- 変数が初期化されていない
対処:
- UdonAssembly で初期値を設定
.data_start
message: %SystemString, null // null は明示的に設定
message2: %SystemString, "Default" // デフォルト値を設定
.data_end nullチェックを追加var value = vm.GetUdonProgramVariable("message");
if (value != null) {
Debug.Log(value);
} else {
Debug.LogWarning("Variable is null");
}
参考:
UdonAssembly のエクスポート関連
❌ クリップボードに何もコピーされない
原因:
- 選択している
.assetファイルが UdonSharpProgramAsset ではない - UdonSharp のコンパイルが完了していない
対処:
- Inspector で
.assetの型を確認(UdonSharpProgramAssetと表示されるか) - UdonSharp のコンパイルが完了しているか確認(Console にエラーが出ていないか)
- 別の UdonSharpProgramAsset で試してみる
- Unity を再起動してみ る
参考:
❌ 貼り付けたテキストが空 / 一部しかコピーされない
原因:
- クリップボードのサイズ制限に引っかかっている(プログラムが非常に大きい場合)
- 他のアプリがクリップボードを上書きした
対処:
- プログラムを分割して複数の
.assetに分ける - 小さなテストプログラムで動作確認する
- エクスポート後、すぐにテキストエディタに貼り付ける(他のコピー操作を挟まない)
参考:
❌ エクスポートした UdonAssembly が実行時にエラーになる
原因:
- エクスポート時に何らかの問題が発生した
- テキストエディタで余計な改行や文字が入った
対処:
- エクスポート操作を再度実行して、最新の状態を取得
- テキストエディタで余計な改行や文字が入っていないか確認
- BOM なしの UTF-8 で保存しているか確認
- デバッグ / 解析 で UdonProgram の構造を確認
セットアップチェックリスト
問題が起きたら、以下を順番に確認してください。
インストール
- Sardinject が導入されている(VCC 経由)
- UdonEmu が導入されている(unitypackage)
-
Packages/com.hoshinolabs.udonemuフォルダが存在する - Unity メニューに「HoshinoLabs」が表示される
コンポーネントの設定
-
UdonEmuコンポーネントが GameObject にアタッチされている - スクリプトコンポーネントが同じ GameObject にアタッチされている
- Inspector で
vmフィールドが設定されている -
typeResolverとprogramDescriptorに[SerializeField]属性が付いている
UdonAssembly
-
.data_start〜.data_endが正しく記述されている -
.code_start〜.code_endが正しく記述されている -
.exportでエントリポイントが宣言されている - 命令のカンマ(
,)が正しく入っている