立ち絵付きの会話画面が表示されない現象について

283 views
Skip to first unread message

MechaLion

unread,
Apr 2, 2022, 5:52:08 AM4/2/22
to 宴ユーザーグループ
宴のバージョン: 宴3.11.4
UnityのバージョンとOS: Unity2020.3.32f1 macOS Monterey ver 12.2.1
Unityの習熟度:同人ゲームを数本リリース

宴の使用方法
・宴を既存のシーンの会話部分に使用しています
・プログラムからシナリオを呼び出しています

発生した不具合 1
IEnumerator ChangeScene_BackGround(string sceneName)
    {
        sceneData = SceneManager.LoadSceneAsync(sceneName);
        sceneData.allowSceneActivation = false;
        while(sceneData.progress < 0.9f)
        {
            yield return null;
        }
        Debug.Log("ロード完了");
    }
上記の様なコルーチンで、バックグラウンドで次に遷移するシーンを読み込んだ状態で、宴のシナリオを呼び出すと、立ち絵を設定した部分が呼び出されず、シナリオが終了します。

立ち絵は、ダイシング、png画像の2つを試しましたが、どちらも表示設定をしていた部分を呼び出すと、シナリオが終了します。

また、この現象発生時にエラーや警告は、コンソールに出力されません。


発生した不具合 2
xlsファイルをUnityへ、インポートすると下記の不具合が出ます。

already exists in  Assets/TESTPRO/TESTPRO.xls:Localize
UnityEngine.Debug:LogError (object)
Utage.LanguageData:OverwriteData (Utage.StringGrid) (at Assets/Utage/Scripts/GameLib/CustomProjectSetting/Language/LanguageData.cs:99)
Utage.LanguageManagerBase:OverwriteData (Utage.StringGrid) (at Assets/Utage/Scripts/GameLib/CustomProjectSetting/Language/LanguageManagerBase.cs:273)
Utage.AdvLocalizeSetting:OnParseGrid (Utage.StringGrid) (at Assets/Utage/Scripts/ADV/DataManager/SettingData/AdvLocalizeSetting.cs:17)
Utage.AdvSettingBase:ParseGrid (Utage.StringGrid) (at Assets/Utage/Scripts/ADV/DataManager/SettingData/AdvSettingBase.cs:20)
Utage.AdvChapterData:BootInit (Utage.AdvSettingDataManager) (at Assets/Utage/Scripts/ADV/DataManager/AdvChapterData.cs:46)
Utage.AdvSettingDataManager:BootInit (string,Utage.AdvDataManager) (at Assets/Utage/Scripts/ADV/DataManager/AdvSettingDataManager.cs:132)
Utage.AdvDataManager:BootInit (string) (at Assets/Utage/Scripts/ADV/DataManager/AdvDataManager.cs:72)
Utage.AdvEngine/<CoBootInit>d__114:MoveNext () (at Assets/Utage/Scripts/ADV/AdvEngine.cs:547)
UnityEngine.SetupCoroutine:InvokeMoveNext (System.Collections.IEnumerator,intptr) (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/Coroutines.cs:17)

マッドネスラボ

unread,
Apr 2, 2022, 7:31:28 AM4/2/22
to 宴ユーザーグループ
おそらく、宴というよりも、Unityの使い方の問題です。

 SceneManager.LoadSceneAsync とだけすると、LoadSceneModeSingleとなります。
その場合以前のシーンは消えてしまいます。なので、以前のシーンに宴があった場合は、強制的に消えてしまいます。

複数シーンを同時に使う場合は、
SceneManager.LoadSceneAsync(sceneName,LoadSceneMode.Additive);  などどする必要があります。

この辺けっこう面倒な点が多い上にUnity公式での情報がまとまってないのですが、
一応私が知る限りはこちらにまとめてあります。
https://madnesslabo.net/utage/?page_id=2937#i-4


>xlsファイルをUnityへ、インポートすると下記の不具合が出ます。
これは、TESTPRO.xlsの「Localize」シートでのエラーです。
一行目には言語名が設定するのですが、一行目の各セルに同じ名前が複数行あると発生するエラーです。
エラーメッセージに重複した言語名も表示されるはずですが、表示されていないようでしたら、スペースなどの空白文字が設定されていないかチェックしてみてください。





2022年4月2日土曜日 18:52:08 UTC+9 MechaLion:

MechaLion

unread,
Apr 2, 2022, 8:12:43 AM4/2/22
to 宴ユーザーグループ
素早いご対応ありがとうございます。

2つ目の不具合に関しては、Localizeシートの空白列を丸ごと削除することで解決しました。
私は、xlsのデータをmacのNumbersで編集・変換することで作成していたのですが、Numbersの仕様なのか宴でxlsファイルを生成した直後でも、Localizeシートに空白の列が4つ生成され、それがxlsへの再変換時に空白文字の入ったセルとなるようで、宴でエラーとして反応していたのかもしれません。
ご指摘いただけなければ、危うくいつまでも悩んでいる所でした。 
改めて、御礼申し上げます。


そして、 一つ目の不具合に関してなのですが、少し説明不足だった様ですので、改めてご質問させていただきます。

ご指摘いただいた、LoadSceneAsyncの使用方法についてですが、sceneData = SceneManager.LoadSceneAsync(sceneName);を  sceneData.allowSceneActivation = false; と設定してして使っているので、読み込みが完了した状態ではありますが、その場では実際にシーンの遷移を行わない形で使っています。

シーンA:宴を配置
シーンB:遷移先

1 シーンAで、LoadSceneAsyncを使い、変数 NextSceneにシーンBの情報を読み込ませる。
2 LoadSceneAsyncは、allowSceneActivation = falseとして、読み込みが完了しても遷移はしない。
3 変数 NextSceneに、シーンBの読み込みデータの格納が完了
4 シーンAで、宴でシナリオを呼び出す。
5 立ち絵なしの部分は、正常に再生されるが、立ち絵を設定した部分は、再生されずにシナリオが終了してしまう。

5について、例えば、以下のようにシナリオを書いてあるとします。

1 空白    1行目のテキスト
2    キャラ名  2行目のテキスト 
3  EndScenario 空白

このシナリオをLoadSceneAsyncでシーン情報を読み込んだ後(遷移はしない)に呼び出すと 1の部分は再生されますが、2の部分は再生されずにシナリオが終了してしまいます。

2022年4月2日土曜日 20:31:28 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Apr 2, 2022, 8:50:24 AM4/2/22
to 宴ユーザーグループ
すみません。ちょっとその状況を確認したことはないのですが、
考えられる原因としては・・・

・複数シーンとは関係なく、シナリオの書き方や宴の不具合
シーン制御をおこなわず、同じシナリオを再生して正常に再生するか確認してみてください。
同じ不具合がでるようでしたら、シーン遷移とは別の問題です。


・シーン遷移の制御の問題
シーン遷移を行ったときにのみに不具合が発生するのであれば、その制御になんらかの原因がある可能性があります。
シナリオが終了してしまった瞬間に、シーンAが消えていたり、AdvEngineが非アクティブになっていないかをヒエラルキー上で確認してみてください。
その場合は、なんらかの原因(allowSceneActivation =trueとするタイミングが早いなど)で、宴のシナリオ終了前にシーン削除やAdvEngineが停止してしまっている可能性があります。

宴のコマンドの実行状況は、「Debug Output  」を設定することで、簡易的にコンソールに出力して確認すること可能です。

やはり原因が不明だったり、宴に不具合があるようであれば、こちら調査いたします。
お手数ですが、こちらに不具合を再現できるプロジェクトの送信をお願いします。


2022年4月2日土曜日 21:12:43 UTC+9 MechaLion:

MechaLion

unread,
Apr 2, 2022, 10:28:54 AM4/2/22
to 宴ユーザーグループ
googleグループの操作に不慣れなもので、投稿が反映されていないので、再度投稿させていただきます。
重複の場合は、申し訳ありません。

・通常動作の確認について
バックグラウンドでのシーン読み込みを行わずに実行した際は、正常に立ち絵付きのシナリオが再生されます。
念のため、コルーチン内の命令をシーン読み込み以外のものにして、実行したところ正常にシナリオが再生されたので、コルーチン自体が原因とは考えにくです。

・シーン制御の問題について
宴のシナリオを呼び出し・終了時共に、シーン遷移が発生しない処理を行っています。
allowSceneActivation =true の命令は、特定の操作(例えば、UIのボタンを押す)を行わない限り実行されない構成です。
念のため、allowSceneActivation =trueの命令文をコメントアウトして、動作確認を行いましたが、AdvEngine、シーン共に消えていませんでした。

・まとめ
やはり、LoadSceneAsyncで読み込んだ際にのみ、不具合が発生しているように思います。
プロジェクトファイルを送信しましたので、ご確認のほどよろしくお願いいたします。


正常動作時のログ
Jump : Start :0
UnityEngine.Debug:Log (object)
Utage.AdvScenarioThread/<CoStartScenario>d__62:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:167)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvScenarioThread:StartScenario (string,int,bool) (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:158)
Utage.AdvScenarioPlayer:StartScenario (string,int) (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioPlayer.cs:169)
Utage.AdvEngine/<CoStartScenario>d__131:MoveNext () (at Assets/Utage/Scripts/ADV/AdvEngine.cs:765)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvEngine:StartScenario (string,int) (at Assets/Utage/Scripts/ADV/AdvEngine.cs:751)
Utage.AdvEngine/<CoStartGameSub>d__125:MoveNext () (at Assets/Utage/Scripts/ADV/AdvEngine.cs:689)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvEngine:StartGameSub (string) (at Assets/Utage/Scripts/ADV/AdvEngine.cs:679)
Utage.AdvEngine:StartGame (string) (at Assets/Utage/Scripts/ADV/AdvEngine.cs:674)
Utage.AdvEngine:StartGame () (at Assets/Utage/Scripts/ADV/AdvEngine.cs:665)
Utage.AdvEngineStarter/<CoPlayEngine>d__53:MoveNext () (at Assets/Utage/Scripts/ADV/AdvEngineStarter.cs:371)

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

Command : Utage.AdvCommandText Test01:0
UnityEngine.Debug:Log (object)
Utage.AdvScenarioThread/<CoStartPage>d__64:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:346)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvScenarioThread/<CoStartScenario>d__62:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:212)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvScenarioThread:StartScenario (string,int,bool) (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:158)
Utage.AdvScenarioPlayer:StartScenario (string,int) (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioPlayer.cs:169)
Utage.AdvEngine/<CoStartScenario>d__131:MoveNext () (at Assets/Utage/Scripts/ADV/AdvEngine.cs:765)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvEngine:StartScenario (string,int) (at Assets/Utage/Scripts/ADV/AdvEngine.cs:751)
Utage.AdvEngine/<CoStartGameSub>d__125:MoveNext () (at Assets/Utage/Scripts/ADV/AdvEngine.cs:689)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvEngine:StartGameSub (string) (at Assets/Utage/Scripts/ADV/AdvEngine.cs:679)
Utage.AdvEngine:StartGame (string) (at Assets/Utage/Scripts/ADV/AdvEngine.cs:674)
Utage.AdvEngine:StartGame () (at Assets/Utage/Scripts/ADV/AdvEngine.cs:665)
Utage.AdvEngineStarter/<CoPlayEngine>d__53:MoveNext () (at Assets/Utage/Scripts/ADV/AdvEngineStarter.cs:371)

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

Wait...Utage.AdvCommandText
UnityEngine.Debug:Log (object)
Utage.AdvScenarioThread/<CoStartPage>d__64:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:367)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvScenarioThread/<CoStartScenario>d__62:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:212)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvScenarioThread:StartScenario (string,int,bool) (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:158)
Utage.AdvScenarioPlayer:StartScenario (string,int) (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioPlayer.cs:169)
Utage.AdvEngine/<CoStartScenario>d__131:MoveNext () (at Assets/Utage/Scripts/ADV/AdvEngine.cs:765)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvEngine:StartScenario (string,int) (at Assets/Utage/Scripts/ADV/AdvEngine.cs:751)
Utage.AdvEngine/<CoStartGameSub>d__125:MoveNext () (at Assets/Utage/Scripts/ADV/AdvEngine.cs:689)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvEngine:StartGameSub (string) (at Assets/Utage/Scripts/ADV/AdvEngine.cs:679)
Utage.AdvEngine:StartGame (string) (at Assets/Utage/Scripts/ADV/AdvEngine.cs:674)
Utage.AdvEngine:StartGame () (at Assets/Utage/Scripts/ADV/AdvEngine.cs:665)
Utage.AdvEngineStarter/<CoPlayEngine>d__53:MoveNext () (at Assets/Utage/Scripts/ADV/AdvEngineStarter.cs:371)

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

Wait...Utage.AdvCommandText
UnityEngine.Debug:Log (object)
Utage.AdvScenarioThread/<CoStartPage>d__64:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:367)

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

End :Utage.AdvCommandText Test01:0
UnityEngine.Debug:Log (object)
Utage.AdvScenarioThread/<CoStartPage>d__64:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:373)

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

Command : Utage.AdvCommandCharacter Test01:1
UnityEngine.Debug:Log (object)
Utage.AdvScenarioThread/<CoStartPage>d__64:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:346)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvScenarioThread/<CoStartScenario>d__62:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:212)

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

End :Utage.AdvCommandCharacter Test01:1
UnityEngine.Debug:Log (object)
Utage.AdvScenarioThread/<CoStartPage>d__64:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:373)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvScenarioThread/<CoStartScenario>d__62:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:212)

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

Command : Utage.AdvCommandText Test01:1
UnityEngine.Debug:Log (object)
Utage.AdvScenarioThread/<CoStartPage>d__64:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:346)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvScenarioThread/<CoStartScenario>d__62:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:212)

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

Wait...Utage.AdvCommandText
UnityEngine.Debug:Log (object)
Utage.AdvScenarioThread/<CoStartPage>d__64:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:367)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvScenarioThread/<CoStartScenario>d__62:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:212)

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

End :Utage.AdvCommandText Test01:1
UnityEngine.Debug:Log (object)
Utage.AdvScenarioThread/<CoStartPage>d__64:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:373)

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

Command : Utage.AdvCommandEndScenario Test01:2
UnityEngine.Debug:Log (object)
Utage.AdvScenarioThread/<CoStartPage>d__64:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:346)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvScenarioThread/<CoStartScenario>d__62:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:212)

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

End :Utage.AdvCommandEndScenario Test01:2
UnityEngine.Debug:Log (object)
Utage.AdvScenarioThread/<CoStartPage>d__64:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:373)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvScenarioThread/<CoStartScenario>d__62:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:212)

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


不具合発生時のログ
Jump : Start :0
UnityEngine.Debug:Log (object)
Utage.AdvScenarioThread/<CoStartScenario>d__62:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:167)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvScenarioThread:StartScenario (string,int,bool) (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:158)
Utage.AdvScenarioPlayer:StartScenario (string,int) (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioPlayer.cs:169)
Utage.AdvEngine/<CoStartScenario>d__131:MoveNext () (at Assets/Utage/Scripts/ADV/AdvEngine.cs:765)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvEngine:StartScenario (string,int) (at Assets/Utage/Scripts/ADV/AdvEngine.cs:751)
Utage.AdvEngine/<CoStartGameSub>d__125:MoveNext () (at Assets/Utage/Scripts/ADV/AdvEngine.cs:689)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvEngine:StartGameSub (string) (at Assets/Utage/Scripts/ADV/AdvEngine.cs:679)
Utage.AdvEngine:StartGame (string) (at Assets/Utage/Scripts/ADV/AdvEngine.cs:674)
Utage.AdvEngine:StartGame () (at Assets/Utage/Scripts/ADV/AdvEngine.cs:665)
Utage.AdvEngineStarter/<CoPlayEngine>d__53:MoveNext () (at Assets/Utage/Scripts/ADV/AdvEngineStarter.cs:371)

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

Command : Utage.AdvCommandText Test01:0
UnityEngine.Debug:Log (object)
Utage.AdvScenarioThread/<CoStartPage>d__64:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:346)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvScenarioThread/<CoStartScenario>d__62:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:212)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvScenarioThread:StartScenario (string,int,bool) (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:158)
Utage.AdvScenarioPlayer:StartScenario (string,int) (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioPlayer.cs:169)
Utage.AdvEngine/<CoStartScenario>d__131:MoveNext () (at Assets/Utage/Scripts/ADV/AdvEngine.cs:765)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvEngine:StartScenario (string,int) (at Assets/Utage/Scripts/ADV/AdvEngine.cs:751)
Utage.AdvEngine/<CoStartGameSub>d__125:MoveNext () (at Assets/Utage/Scripts/ADV/AdvEngine.cs:689)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvEngine:StartGameSub (string) (at Assets/Utage/Scripts/ADV/AdvEngine.cs:679)
Utage.AdvEngine:StartGame (string) (at Assets/Utage/Scripts/ADV/AdvEngine.cs:674)
Utage.AdvEngine:StartGame () (at Assets/Utage/Scripts/ADV/AdvEngine.cs:665)
Utage.AdvEngineStarter/<CoPlayEngine>d__53:MoveNext () (at Assets/Utage/Scripts/ADV/AdvEngineStarter.cs:371)

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

Wait...Utage.AdvCommandText
UnityEngine.Debug:Log (object)
Utage.AdvScenarioThread/<CoStartPage>d__64:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:367)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvScenarioThread/<CoStartScenario>d__62:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:212)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvScenarioThread:StartScenario (string,int,bool) (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:158)
Utage.AdvScenarioPlayer:StartScenario (string,int) (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioPlayer.cs:169)
Utage.AdvEngine/<CoStartScenario>d__131:MoveNext () (at Assets/Utage/Scripts/ADV/AdvEngine.cs:765)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvEngine:StartScenario (string,int) (at Assets/Utage/Scripts/ADV/AdvEngine.cs:751)
Utage.AdvEngine/<CoStartGameSub>d__125:MoveNext () (at Assets/Utage/Scripts/ADV/AdvEngine.cs:689)
UnityEngine.MonoBehaviour:StartCoroutine (System.Collections.IEnumerator)
Utage.AdvEngine:StartGameSub (string) (at Assets/Utage/Scripts/ADV/AdvEngine.cs:679)
Utage.AdvEngine:StartGame (string) (at Assets/Utage/Scripts/ADV/AdvEngine.cs:674)
Utage.AdvEngine:StartGame () (at Assets/Utage/Scripts/ADV/AdvEngine.cs:665)
Utage.AdvEngineStarter/<CoPlayEngine>d__53:MoveNext () (at Assets/Utage/Scripts/ADV/AdvEngineStarter.cs:371)

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

Wait...Utage.AdvCommandText
UnityEngine.Debug:Log (object)
Utage.AdvScenarioThread/<CoStartPage>d__64:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:367)

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

End :Utage.AdvCommandText Test01:0
UnityEngine.Debug:Log (object)
Utage.AdvScenarioThread/<CoStartPage>d__64:MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:373)

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






2022年4月2日土曜日 21:50:24 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Apr 2, 2022, 11:06:27 AM4/2/22
to 宴ユーザーグループ
プロジェクトの送信ありがとうございます。
不具合が再現できましたので、調査したところ原因がわかりました。

AdvEngineは立ち絵のリソースのロード待ち状態で止まっていました。

allowSceneActivation のUnity側の仕様として、allowSceneActivationがtrueになるまで、シーンロード以外のものも含めて、非同期ロード処理が止まってしまうようです。
なので、それが原因です。
参考
  For example, if a LoadSceneAsync.allowSceneActivation is set to false, and another AsyncOperation (e.g. SceneManager.UnloadSceneAsync ) initializes, Unity does not call the second operation until the first AsyncOperation.allowSceneActivation is set to true.
  例えば、LoadSceneAsync.allowSceneActivation が false に設定され、別の AsyncOperation (例えば SceneManager.UnloadSceneAsync ) が初期化された場合、最初の AsyncOperation.allowSceneActivation が true になるまで Unity は2番目の操作を呼び出さない。


不完全ながら、回避策をお伝えいたします。
宴のリソースロードを同期にするか非同期にするかは、Asset File Managerの「Enable Resources Load Async 」で設定できます。
これをfalseにすることで、同期ロードにすることができるのですが、その場合は重いロードのたびに一瞬ゲームが停止してしカクカクしてしまうことになります。
なので、通常はtrueのままにして、
シーンをバックグラウンドでロードするときのみ、プログラム上で宴のEnableResourcesLoadAsyncをfalseにして、
シーンロードが終わったら、trueに戻すという方法をとるのことで、正常に動作するようになると思います。

サンプル

    //バックグラウンドロードでのシーン遷移を試みる
    IEnumerator ChangeScene_BackGround(string sceneName)
    {
        AssetFileManager.GetInstance().EnableResourcesLoadAsync = false;
        ar = SceneManager.LoadSceneAsync(sceneName);
        ar.allowSceneActivation = false;
        while(ar.progress < 0.9f)

        {
            yield return null;
        }
        Debug.Log("ロード完了");
    }

    //バックグラウンドで読み込んだシーンへ遷移
    public void GotoNextScene()
    {
        ar.allowSceneActivation = true;
        AssetFileManager.GetInstance().EnableResourcesLoadAsync = true;
    }

ただ、特殊なケースのため、何かしら予期せぬ問題が起きるかもしれません。
また、同期・非同期を切り替えるのはResources以下の素材をロードする場合のみにしか使えません。
アセットバンドルなどを使った場合は、ロードは基本的に非同期になるため、おそらくロードが停止してしまい、不具合が再発することになると思います。
「allowSceneActivation =falseの時には、ほかの非同期ロードを止めてしまう」というのはUnity側の仕様なので、宴側では根本的な回避できないと思います。


2022年4月2日土曜日 23:28:54 UTC+9 MechaLion:

MechaLion

unread,
Apr 3, 2022, 3:01:28 AM4/3/22
to 宴ユーザーグループ
ご回答ありがとうございます。

まさか、allowSceneActivationが、非同期読み込み全体に影響するとは思いませんでした。

私は、宴のシナリオ再生の裏で次のシーンを読み込みたかったのですが、allowSceneActivation = true にした瞬間に次のシーンへと遷移してしまうため、アセットバンドルの使用も視野に入れ、立ち絵の表示に関しては、宴の機能を使用せずに実装する方向にしようと思いましたが……

宴の公式HPにて掲載されていた Addressable Assets Systemのサンプルスクリプトを入れ、読み込みをこちらに切り替えたところ、バックグラウンドでのロードを行っていても、立ち絵付きのシナリオが問題なく再生されました。

お手数をおかけしましたが、無事、解決しました。

改めて、色々とありがとうございました。
2022年4月3日日曜日 0:06:27 UTC+9 マッドネスラボ:
Reply all
Reply to author
Forward
0 new messages