質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

2845閲覧

Unityのバージョンあげた結果、シーンのアンロードが正しく機能しなくなってしまった。

xu0124

総合スコア31

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2017/10/15 14:16

###前提・実現したいこと
以前、使わせていただいた参考データがUnityのバージョン(Unity5.6.3)を上げると例外が発生します。

参考データ
https://github.com/sanukin39/SceneManagerTest/tree/master/Assets

エラーから現在読み込まれていないシーンをアンロードすると以下の例外が発生することがわかったのですが、解決方法がわかりません。

ボタンを押した時に読み込まれているシーンを破棄して、新しいシーンを読み込むようにしたいのです。

よろしくおねがいします。

###発生している問題・エラーメッセージ

ArgumentException: Scene to unload is invalid UnityEngine.SceneManagement.SceneManager.UnloadSceneAsync (System.String sceneName) (at C:/buildslave/unity/build/artifacts/generated/common/runtime/SceneManagerBindings.gen.cs:202) SceneHolder.LoadMainScene (MainScene scene) (at Assets/SceneHolder.cs:14) SceneHolder.Start () (at Assets/SceneHolder.cs:10)

###該当のソースコード

C#

1using UnityEngine; 2using UnityEngine.SceneManagement; 3using System.Collections; 4 5public class SceneHolder : MonoBehaviour { 6 7 Scene LoadedScene; 8 9 void Start(){ 10 LoadMainScene(MainScene.Quest); 11 } 12 13 public void LoadMainScene(MainScene scene){ 14 SceneManager.UnloadSceneAsync(LoadedScene.name); 15 SceneManager.LoadScene(scene.ToString(), LoadSceneMode.Additive); 16 LoadedScene = SceneManager.GetSceneByName(scene.ToString()); 17 18 } 19} 20 21public enum MainScene{ 22 Friend, 23 Gacha, 24 Monster, 25 Quest, 26 Shop 27}

###試したこと
.UnloadSceneから
.UnloadSceneAsyncに変更

またはコメントアウト
//SceneManager.UnloadSceneAsync(LoadedScene.name);

###補足情報(言語/FW/ツール等のバージョンなど)
Unity5.6.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

現在読み込まれていないシーンをアンロードすると発生するということは、
現在そのシーンが読み込まれているか判定して、アンロードする・しないを分岐すればよいのでは。

C#

1//シーンが読み込まれている時だけ破棄 2if (LoadedScene.IsValid()) { 3 SceneManager.UnloadSceneAsync(LoadedScene.name); 4}

参考
【Unity】俺はまだSceneManagerを全力で使っていない! - うら干物書き

投稿2017/10/16 04:54

sakura_hana

総合スコア11427

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xu0124

2017/10/16 13:38

ありがとうございます。仰る通り分岐して、うまく動くようになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問