タイトル画面ではじめからと続きから、二通りのScene遷移に対応するため、LoadSceneAsyncでSceneを二つ読み込ませました。
そうすると、前者のScene遷移は成功するのですが、後者は遷移できなくなりました。後者は、Sceneの読み込みが一つなら遷移します。
つまり、先に読み込まれたLoadSceneAsyncのみしか機能していません。
Scene内で、片方へのシーン遷移が決定した段階でもう片方のシーンの読み込みを破棄するようなことはできるのでしょうか?
コード内で、Unload()という関数を作って、UnityEventから読んでみましたが削除には至りませんでした。
![
今のところは、2つのsceneを読み込ませること自体が良くなさそうなので、どちらのシーンに遷移するか決定した瞬間から1つLoadSceneAsyncを走らせる、事前ロードのメリットを捨てる方法しか思いつきませんでした。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.SceneManagement; 5using UnityEngine.UI; 6 7public class FadeInSceneMover : MonoBehaviour { 8 9 private CanvasGroup fadetarget; 10 // 非同期動作で使用するAsyncOperation 11 private AsyncOperation async; 12 13 [SerializeField] 14 private GameObject _Fadetarget; 15 16 private bool waitFlag = true; 17 18 [SerializeField] 19 private float Executetime = 0; 20 21 [SerializeField] 22 public string SceneName; 23 24 // Use this for initialization 25 void Start () { 26 fadetarget = _Fadetarget.GetComponent<CanvasGroup>(); 27 StartCoroutine("LoadData"); 28 async.allowSceneActivation = false; 29 } 30 31 // Update is called once per frame 32 void Update () { 33 if (fadetarget.alpha >= 1) 34 { 35 Invoke("Contents", Executetime); 36 } 37 } 38 39 IEnumerator LoadData() 40 { 41 // シーンの読み込みをする 42 async = SceneManager.LoadSceneAsync(SceneName); 43 yield return null; 44 45 } 46 47 private void Contents() 48 { 49 async.allowSceneActivation = true; 50 51 } 52 53 private void Unload() 54 { 55 //シーンの削除 56 async=SceneManager.UnloadSceneAsync(SceneName); 57 } 58} 59
あなたの回答
tips
プレビュー