シナリオインポート時に同じExcelが二重に読み込まれる

83 views
Skip to first unread message

nunu

unread,
Nov 2, 2023, 8:53:25 AM11/2/23
to 宴ユーザーグループ
・宴のバージョン:3.12.7
・Unityのバージョン:2021.3.16f1
・OSバージョン:Windows11
・Unityの習熟度:宴のSendMessageは使えます

お世話になっております。
シナリオのインポート時、原因不明のエラーが発生したので問い合わせをさせていただけますと幸いです。

※掲題の「シナリオインポート時に同じExcelが二重に読み込まれる」というのは、あくまでデバッグログを見た限りでの推測になります。


コンソールのスクリーンショットは下記になります。
スクリーンショット 2023-11-02 212918.png
コンソールの上から1番目~2番目の「Reimport Assets~」は、シナリオインポート時に同時に出現しました。
なので、同一のシナリオファイルが二重にインポートされているのではと推測した次第です。


エラーが発生した経緯は下記の通りです。
------------------------------
①既存プロジェクトをunitypacage形式でエクスポート
②新規プロジェクトを作成し、unitypacageをインポート
③不要なリソース・シナリオを削除し、シナリオをインポート
④インポート時のデバッグログで、マクロ・テクスチャ・レイヤー等の「◯◯ is already contains」と設定重複のエラーが大量に出る
 ⇒Excelの設定シートを確認しましたが、マクロ・テクスチャ等が二重に記述されていることはありませんでした。
------------------------------
他、宴のセーブデータ&キャッシュ消去、Unity再起動、PC再起動など基本的な対策は試しましたが、不具合は解消されませんでした。


Scenario Data Builderのスクリーンショットも添付いたします。
スクリーンショット 2023-11-02 212947.png
エクスポート元の既存プロジェクトは、正常にインポートが行えています。

既存プロジェクトとの差異としては、新規プロジェクトでは「Excel Dir」を設定しないとエラーが発生してシナリオインポートができないという点です。
既存プロジェクト(宴のバージョンは同じ)では、「Excel Dir」がNoneのままでもシナリオインポートが可能でした。


新規プロジェクトの方をお送りすることも可能ですので、大変お手数ですがご調査をお願いできますと幸いです。

お忙しいところ恐れ入りますが、よろしくお願いいたします。

マッドネスラボ

unread,
Nov 2, 2023, 9:02:04 AM11/2/23
to 宴ユーザーグループ
ExcelListファイル内あるファイルが、ExcelDirで設定したディレクトリ以下にある場合、二重に読み込んでしまう可能性があります。
ExcelListのほうからファイル設定を外してみてください。

(すぐには難しいのですが)将来的なバージョンでは、
ExcelDirのほうをデフォルト設定に変えるとともに、重複が発生していても重複してインポートしないようにしていこうと思います。







2023年11月2日木曜日 21:53:25 UTC+9 nunu:

nunu

unread,
Nov 2, 2023, 9:18:12 AM11/2/23
to 宴ユーザーグループ
迅速なご回答、大変恐れ入ります……!

ExcelListの設定ファイルを外してみたのですが、添付のようなエラーが発生しインポートができない状態となりました。
スクリーンショット 2023-11-02 221246.png
ちなみに、「Excel Dir」がNoneの時も、同じ「MissingRefereneException」のエラーが発生しておりました。


もし設定が間違っているようでしたら、大変お手数ですがご指摘いただけますと助かります。

将来的な実装についても承知いたしました。
ご回答は明日以降で構いませんので、引き続きよろしくお願いいたします。


2023年11月2日木曜日 22:02:04 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Nov 2, 2023, 12:46:49 PM11/2/23
to 宴ユーザーグループ
「MissingRefereneException」は、なんらかの原因で削除または破壊されてしまった Unityのオブジェクトを使おうとした場合に起きるエラーです。
どこかに設定してあるアセットを削除したり、オブジェクトを定義するスクリプトを書き換えたりして参照が破壊されてしまったときに起きます。

どこで起きているエラーかが分かれば、どのオブジェクトが原因かわかるかもしれませんので、
エラー文をコピペして載せていただくか、エラーがどの行で起きているかのログがわかるようなスクショ(最初のスクリーンショットのような感じです)を載せていただけるでしょうか



2023年11月2日木曜日 22:18:12 UTC+9 nunu:

nunu

unread,
Nov 2, 2023, 12:54:38 PM11/2/23
to 宴ユーザーグループ
ご丁寧に本当にありがとうございます……!

「MissingReferenceException」のエラーコードの全文を下記に記載させていただきます。
お手すきの際にご確認いただけると大変助かります。

------------------------------
MissingReferenceException: The object of type 'Object' 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 <4746c126b0b54f3b834845974d1a9190>:0)
Utage.StaticAssetManager+<>c__DisplayClass5_0.<Contains>b__0 (Utage.StaticAsset x) (at Assets/Utage/Scripts/GameLib/File/UtageFile/StaticAssetManager.cs:42)
System.Collections.Generic.List`1[T].Find (System.Predicate`1[T] match) (at <75633565436c42f0a6426b33f0132ade>:0)
Utage.StaticAssetManager.Contains (System.String path) (at Assets/Utage/Scripts/GameLib/File/UtageFile/StaticAssetManager.cs:42)
Utage.AssetFileManager.AddFileCheckerInEditor (System.String path, Utage.IAssetFileSettingData settingData) (at Assets/Utage/Scripts/GameLib/File/AssetFileManager.cs:245)
Utage.AssetFileManager.GetFileCreateIfMissing (System.String path, Utage.IAssetFileSettingData settingData) (at Assets/Utage/Scripts/GameLib/File/AssetFileManagerSingleton.cs:77)
Utage.AdvGraphicInfo.BootInit (System.Func`3[T1,T2,TResult] FileNameToPath, Utage.AdvSettingDataManager dataManager) (at Assets/Utage/Scripts/ADV/Graphic/AdvGraphicInfo.cs:208)
Utage.AdvGraphicInfoList.BootInit (System.Func`3[T1,T2,TResult] FileNameToPath, Utage.AdvSettingDataManager dataManager) (at Assets/Utage/Scripts/ADV/Graphic/AdvGraphicInfoList.cs:65)
Utage.AdvCharacterSettingData.BootInit (Utage.AdvSettingDataManager dataManager) (at Assets/Utage/Scripts/ADV/DataManager/SettingData/AdvCharacterSetting.cs:146)
Utage.AdvCharacterSetting.BootInit (Utage.AdvSettingDataManager dataManager) (at Assets/Utage/Scripts/ADV/DataManager/SettingData/AdvCharacterSetting.cs:262)
Utage.AdvChapterData.BootInit (Utage.AdvSettingDataManager settingDataManager) (at Assets/Utage/Scripts/ADV/DataManager/AdvChapterData.cs:54)
Utage.AdvSettingDataManager.BootInit (System.String rootDirResource, Utage.AdvDataManager dataManager) (at Assets/Utage/Scripts/ADV/DataManager/AdvSettingDataManager.cs:132)
Utage.AdvExcelImporter.ImportChapter (System.String chapterName, System.Collections.Generic.List`1[T] books) (at Assets/Utage/Editor/Scripts/Menu/Project/AdvExcelImporter.cs:305)
Utage.AdvExcelImporter.ImportChapter (Utage.AdvScenarioDataProject+ChapterData chapterData, System.Int32 index) (at Assets/Utage/Editor/Scripts/Menu/Project/AdvExcelImporter.cs:144)
Utage.AdvExcelImporter.ImportSub (Utage.AdvScenarioDataProject project) (at Assets/Utage/Editor/Scripts/Menu/Project/AdvExcelImporter.cs:86)
Utage.AdvExcelImporter.ImportAll (Utage.AdvScenarioDataProject project) (at Assets/Utage/Editor/Scripts/Menu/Project/AdvExcelImporter.cs:40)
Utage.AdvScenarioDataBuilderWindow.Import (System.String[] importedAssets) (at Assets/Utage/Editor/Scripts/Menu/Project/AdvScenarioDataBuilderWindow.cs:125)
Utage.AdvScenarioDataBuilderWindow.DrawProject () (at Assets/Utage/Editor/Scripts/Menu/Project/AdvScenarioDataBuilderWindow.cs:202)
Utage.AdvScenarioDataBuilderWindow.OnGUI () (at Assets/Utage/Editor/Scripts/Menu/Project/AdvScenarioDataBuilderWindow.cs:161)
UnityEditor.HostView.InvokeOnGUI (UnityEngine.Rect onGUIPosition) (at <11d97693183d4a6bb35c29ae7882c66b>:0)
UnityEditor.DockArea.DrawView (UnityEngine.Rect dockAreaRect) (at <11d97693183d4a6bb35c29ae7882c66b>:0)
UnityEditor.DockArea.OldOnGUI () (at <11d97693183d4a6bb35c29ae7882c66b>:0)
UnityEngine.UIElements.IMGUIContainer.DoOnGUI (UnityEngine.Event evt, UnityEngine.Matrix4x4 parentTransform, UnityEngine.Rect clippingRect, System.Boolean isComputingLayout, UnityEngine.Rect layoutSize, System.Action onGUIHandler, System.Boolean canAffectFocus) (at <8759e14def7c40b68c657c638e8a0434>:0)
UnityEngine.UIElements.IMGUIContainer.HandleIMGUIEvent (UnityEngine.Event e, UnityEngine.Matrix4x4 worldTransform, UnityEngine.Rect clippingRect, System.Action onGUIHandler, System.Boolean canAffectFocus) (at <8759e14def7c40b68c657c638e8a0434>:0)
UnityEngine.UIElements.IMGUIContainer.HandleIMGUIEvent (UnityEngine.Event e, System.Action onGUIHandler, System.Boolean canAffectFocus) (at <8759e14def7c40b68c657c638e8a0434>:0)
UnityEngine.UIElements.IMGUIContainer.HandleIMGUIEvent (UnityEngine.Event e, System.Boolean canAffectFocus) (at <8759e14def7c40b68c657c638e8a0434>:0)
UnityEngine.UIElements.IMGUIContainer.SendEventToIMGUIRaw (UnityEngine.UIElements.EventBase evt, System.Boolean canAffectFocus, System.Boolean verifyBounds) (at <8759e14def7c40b68c657c638e8a0434>:0)
UnityEngine.UIElements.IMGUIContainer.SendEventToIMGUI (UnityEngine.UIElements.EventBase evt, System.Boolean canAffectFocus, System.Boolean verifyBounds) (at <8759e14def7c40b68c657c638e8a0434>:0)
UnityEngine.UIElements.IMGUIContainer.HandleEvent (UnityEngine.UIElements.EventBase evt) (at <8759e14def7c40b68c657c638e8a0434>:0)
UnityEngine.UIElements.CallbackEventHandler.HandleEventAtTargetPhase (UnityEngine.UIElements.EventBase evt) (at <8759e14def7c40b68c657c638e8a0434>:0)
UnityEngine.UIElements.MouseCaptureDispatchingStrategy.DispatchEvent (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel) (at <8759e14def7c40b68c657c638e8a0434>:0)
UnityEngine.UIElements.EventDispatcher.ApplyDispatchingStrategies (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel, System.Boolean imguiEventIsInitiallyUsed) (at <8759e14def7c40b68c657c638e8a0434>:0)
UnityEngine.UIElements.EventDispatcher.ProcessEvent (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel) (at <8759e14def7c40b68c657c638e8a0434>:0)
UnityEngine.UIElements.EventDispatcher.ProcessEventQueue () (at <8759e14def7c40b68c657c638e8a0434>:0)
UnityEngine.UIElements.EventDispatcher.OpenGate () (at <8759e14def7c40b68c657c638e8a0434>:0)
UnityEngine.UIElements.EventDispatcherGate.Dispose () (at <8759e14def7c40b68c657c638e8a0434>:0)
UnityEngine.UIElements.EventDispatcher.ProcessEvent (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel) (at <8759e14def7c40b68c657c638e8a0434>:0)
UnityEngine.UIElements.EventDispatcher.Dispatch (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel, UnityEngine.UIElements.DispatchMode dispatchMode) (at <8759e14def7c40b68c657c638e8a0434>:0)
UnityEngine.UIElements.BaseVisualElementPanel.SendEvent (UnityEngine.UIElements.EventBase e, UnityEngine.UIElements.DispatchMode dispatchMode) (at <8759e14def7c40b68c657c638e8a0434>:0)
UnityEngine.UIElements.UIElementsUtility.DoDispatch (UnityEngine.UIElements.BaseVisualElementPanel panel) (at <8759e14def7c40b68c657c638e8a0434>:0)
UnityEngine.UIElements.UIElementsUtility.UnityEngine.UIElements.IUIElementsUtility.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr, System.Boolean& eventHandled) (at <8759e14def7c40b68c657c638e8a0434>:0)
UnityEngine.UIElements.UIEventRegistration.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr) (at <8759e14def7c40b68c657c638e8a0434>:0)
UnityEngine.UIElements.UIEventRegistration+<>c.<.cctor>b__1_2 (System.Int32 i, System.IntPtr ptr) (at <8759e14def7c40b68c657c638e8a0434>:0)
UnityEngine.GUIUtility.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr, System.Boolean& result) (at <44335255efcb428fb633c913db3eed7a>:0)

2023年11月3日金曜日 1:46:49 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Nov 2, 2023, 1:07:39 PM11/2/23
to 宴ユーザーグループ
原因は「Static Asset Mangaer」というコンポーネントのようです。

Static Asset Mangaerの「Assets」以下の「Asset」に設定されていたオブジェクトが削除されてしまったのだと思います。
サンプルシーンなどを元にしていると、ここにアセットが設定されていて、サンプルのアセットを削除すると、このようなエラーが起きる可能性があります。
Static Asset Mangaerの「Assets」以下を調べて、Missingになっている要素を削除するなどしてみてください。

Static Asset Mangaerは、通常のロード処理を使わずに、直接シーンにロード済みのアセットを使用するための設定です。
シナリオのインポート時にファイルパスのチェックを行うようにしていると、Static Asset Mangaer内のアセットに対しても検索を走らせるので、その時にエラーがでてしまっているようです。
(将来のバージョンでもう少しわかりやすいエラーがでるようにしておきます)


2023年11月3日金曜日 1:54:38 UTC+9 nunu:

nunu

unread,
Nov 2, 2023, 1:27:59 PM11/2/23
to 宴ユーザーグループ
ご回答ありがとうございます!

仰る通り、Static Asset Mangaerが原因でした。
こちらに登録したアセットを誤って削除してしまっていました。

正常にインポートができるようになりましたので、解決いたしました。
貴重なお時間を割いていただき大変恐縮でしたが、本当に助かりました……!

今後もご無理のない範囲で開発頑張ってください。変わらず応援しております。

2023年11月3日金曜日 2:07:39 UTC+9 マッドネスラボ:
Reply all
Reply to author
Forward
0 new messages