前提・実現したいこと
ステージクリア型のゲームを動かしているのですが、1~4面までは正常に動作しているのですが、5面になるとエラーメッセージが出て、シーンがうまくロードされません。今、出ているエラーを解決して無事に5面をロードできるようにしたいです。
発生している問題・エラーメッセージ
エラーメッセージは2つ出ていて 【1個目】 MissingReferenceException: The object of type 'EffekseerEmitter' 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. Pauser.OnResume () (at Assets/Scripts/System/Pauser.cs:87) Pauser.Resume () (at Assets/Scripts/System/Pauser.cs:137) GameDirector+<LoadSceneClear>c__Iterator2.MoveNext () (at Assets/Scripts/GameDirector.cs:719) UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress) (at C:/buildslave/unity/build/Runtime/Export/Coroutines.cs:17) 【2個目】 <RI.Hid> Failed to create device file: 20 プロセスはファイルにアクセスできません。別のプロセスが使用中です。 --- ヒエラルキーに4面と5面が同時にある状態になって、シーン移行の判定ができなくて止まっていると予想しています。
補足情報(FW/ツールのバージョンなど)
Effekseer
https://effekseer.github.io/jp/index.html
Pauser.csは
http://sleepnel.hatenablog.com/entry/2016/08/10/093000
を参考に99%コピペさせて頂きました。
ただ、100%私のコードがおかしいと思うのですが、質問の文字数制限に引っかかったのでこれ以上書けません。
返信という形で補足説明させていただきたいと思います。
該当のソースコード
C#
1 IEnumerator LoadSceneClear(string i_name)【i_nameロードするシーン】 2 { 3 //指定したステージをロード 4 AsyncOperation async = SceneManager.LoadSceneAsync(i_name, LoadSceneMode.Additive); 5 yield return async; 6 yield return new WaitForSeconds(1.5f); 7 8 //ロード完了までの時間を表示 9 Debug.LogFormat("[Time:{0}] Finished Loading scene={1}", Time.time.ToString("F2"), i_name, gameObject); 10 11 //移動完了したのでキャラの描画再開 12 **Pauser.Resume();【←at Assets/Scripts/GameDirector.cs:719】** 13 14 //ロードが終わったのでシーン切り替え 15 SceneManager.LoadScene(i_name); 16 StageGuide(); 17 18 //次のステージまでの処理を許可する 19 SceneBool = true; 20 //次のステージの処理を開始 21 NextStage2(); 22 23 yield break; 24 }
試したこと
【面をスキップして動作】
1面→5面→ラスト
1面→4面→5面→ラスト
1面→2面→4面→5面→ラスト
問題なく動作
1面→3面→4面→5面
同じエラーが出る
【3面を修正】
4面で同じエラー
何でエラーが起こっているかわからないので、これで、1週間も止まっています。
エラーの調べ方でも良いので教えてください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/29 09:29
2018/04/01 09:44