MissingReferenceExceptionが出て選択肢が表示されない

3,302 views
Skip to first unread message

優水

unread,
Sep 27, 2022, 4:56:05 AM9/27/22
to 宴ユーザーグループ

宴のバージョン: 宴3.11.7

UnityのバージョンとOS: Unity2020.3.30f1 MacOS BigSur

Unityの習熟度:初心者


お疲れ様です。

今回、UI、特に選択肢を弄っていたのですが、

その過程か、以下のようなエラーが吐き出され、選択肢が表示されないようになってしまいました。

MissingReferenceException: The object of type 'GameObject' has been destroyed but you are still trying to access it.

Your script should either check if it is null or you should not destroy the object.

UnityEngine.Object.get_name () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/UnityEngineObject.bindings.cs:194)

Utage.AdvUguiSelectionManager+<>c__DisplayClass25_0.<GetPrefab>b__0 (UnityEngine.GameObject x) (at Assets/Utage/Scripts/ADV/UI/AdvUguiSelectionManager.cs:143)

System.Collections.Generic.List`1[T].Find (System.Predicate`1[T] match) (at <695d1cc93cca45069c528c15c9fdd749>:0)

Utage.AdvUguiSelectionManager.GetPrefab (Utage.AdvSelection selectionData) (at Assets/Utage/Scripts/ADV/UI/AdvUguiSelectionManager.cs:143)

Utage.AdvUguiSelectionManager.CreateItems () (at Assets/Utage/Scripts/ADV/UI/AdvUguiSelectionManager.cs:103)

Utage.AdvUguiSelectionManager.OnBeginShow (Utage.AdvSelectionManager manager) (at Assets/Utage/Scripts/ADV/UI/AdvUguiSelectionManager.cs:185)

UnityEngine.Events.InvokableCall`1[T1].Invoke (T1 args0) (at /Users/bokken/buildslave/unity/build/Runtime/Export/UnityEvent/UnityEvent.cs:221)

UnityEngine.Events.UnityEvent`1[T0].Invoke (T0 arg0) (at /Users/bokken/buildslave/unity/build/Runtime/Export/UnityEvent/UnityEvent/UnityEvent_1.cs:58)

Utage.AdvSelectionManager.Show () (at Assets/Utage/Scripts/ADV/Logic/Selection/AdvSelectionManager.cs:131)

Utage.AdvCommandSelectionEnd.DoCommand (Utage.AdvEngine engine) (at Assets/Utage/Scripts/ADV/Command/Logic/AdvCommandSelectionEnd.cs:19)

Utage.AdvScenarioThread+<CoStartPage>d__64.MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:348)

UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/Coroutines.cs:17)


スクリーンショット 2022-09-27 17.23.10.png

プレハブはコピーをして外観、サウンド以外には触っていません。
また、AdvUguiSelectionManagerへのアサインもされています。
しかしやはりプレハブに原因があるのではないかと思うのですが…

スクリーンショット 2022-09-27 17.23.24.png

また、StaticAssetManagerに設定されているファイルも削除されておらず、
どこに原因があるのかわからない状態です。

この場合何が原因と考えられるでしょうか。

お手数をおかけします。

マッドネスラボ

unread,
Sep 27, 2022, 5:20:48 AM9/27/22
to 宴ユーザーグループ
>MissingReferenceException: The object of type 'GameObject' has been destroyed but you are still trying to access it.
このエラーメッセージは、削除してしまったGameObjectやプレハブを参照しようとすると発生するエラーです。

おそらく、「AdvUguiSelectionManager」のPrefabListに設定していたプレハブのどれかを削除してしまったのが原因と思われます。
PrefabListの中でMissingになっている要素を削除するか、新しいプレハブを再設定してみてください。

2022年9月27日火曜日 17:56:05 UTC+9 優水:

優水

unread,
Sep 27, 2022, 6:22:44 AM9/27/22
to 宴ユーザーグループ
スクリーンショット 2022-09-27 19.09.04.png
ご返信ありがとうございます。上記の通り設定したのですが、ゲームを開始するとPrefab ListがMissingになってしまうようです。
設定した部分がゲーム開始とともに読み込まれなくなる場合、どのような問題があるでしょうか。
引き続き、よろしくお願いいたします。

2022年9月27日火曜日 18:20:48 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Sep 27, 2022, 5:11:00 PM9/27/22
to 宴ユーザーグループ
ゲームプレイ後にMissingになるということは、おそらくプレハブを設定しているのではなく、
シーン内のGameObjectを設定しているのだと思います。
ProjectWindow内のプレハブを選択するようにしてください。
https://madnesslabo.net/utage/?page_id=1808#i-6

ss_0514.png

シーン内にあるほうは、レイアウトなどを調整しやすいように置いているだけで、編集用の仮のものです。
ゲーム開始後は、初期化のタイミングでいったんシーン内の選択肢を消して、各選択肢を表示するタイミングでプレハブを元に選択肢を作り直すようになっています。



2022年9月27日火曜日 19:22:44 UTC+9 優水:

マッドネスラボ

unread,
Sep 27, 2022, 5:25:43 PM9/27/22
to 宴ユーザーグループ
追記:
>シーン内にあるほうは、レイアウトなどを調整しやすいように置いているだけで、編集用の仮のものです。
これは、昔のバージョンのUnitではプレハブの編集はいったんシーン内にGameObjectを作って行うしかなかったため、そのようになっています。
今のバージョンのUnityではプレハブを直接編集できるので、逆にシーン内にプレハブを元にしたGameObjectがある・・・というのは無駄に見えて誤解を生んでしまっているかもしれません。


2022年9月28日水曜日 6:11:00 UTC+9 マッドネスラボ:
Message has been deleted

優水

unread,
Sep 27, 2022, 8:22:22 PM9/27/22
to 宴ユーザーグループ
ありがとうございます!無事、選択肢が表示されるようになりました。
現在、動作上は問題ないのですが以下のエラーが表示されています。
気になるので報告させてください。

NotTextUpdated OnCreateVertex
UnityEngine.Debug:LogError (object)
Utage.UguiNovelTextGenerator:CreateVertex (System.Collections.Generic.List`1<UnityEngine.UIVertex>) (at Assets/Utage/Scripts/GameLib/UI/NovelText/UguiNovelTextGenerator.cs:326)
Utage.UguiNovelText:OnPopulateMesh (UnityEngine.UI.VertexHelper) (at Assets/Utage/Scripts/GameLib/UI/NovelText/UguiNovelText.cs:56)
UnityEngine.Canvas:SendWillRenderCanvases () (at /Users/bokken/buildslave/unity/build/Modules/UI/ScriptBindings/UICanvas.bindings.cs:84)

2022年9月28日水曜日 6:25:43 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Sep 27, 2022, 8:40:33 PM9/27/22
to 宴ユーザーグループ
そのエラーは本来でないはずではあるのですが、
どのようなタイミングで発生しているでしょうか?プレハブの編集中か、ゲームプレイと起動直後か、選択肢の表示の前後など・・・
また、AutoLayoutなどの自動レイアウト機能を使っているでしょうか?


2022年9月28日水曜日 9:22:22 UTC+9 優水:

優水

unread,
Sep 27, 2022, 8:46:13 PM9/27/22
to 宴ユーザーグループ
プレハブ編集中などには現れず、ゲーム起動直後に出ていたはずなのですが、(ゲーム起動か、「はじめから」を選択したかは曖昧です)
Unityを再起動したところ出なくなりました。
自動レイアウト機能等は使っておりません。
結果的にエラーは出なくなったので、ひとまずこれで締めさせてください。
丁寧にご回答くださり、ありがとうございました!

2022年9月28日水曜日 9:40:33 UTC+9 マッドネスラボ:
Reply all
Reply to author
Forward
0 new messages