実現したいこと
タイトル画面、最後の画面、この2つのシーン以外が19個有る状態(合計だと21個のシーン)で
シーンの重複無しでランダムにシーンを遷移させたい
発生している問題・分からないこと
テラテイルで5年ぐらい前に
Unity C#でランダムに1~10のシーンを重複無しで切り替えたい。という質問が有ってまさにそれが今やりたい事なので
その通りにやってみています。
5年前の質問の回答者様がソースコードを書いてくれていまして
空のGameObjectを作ってそこにアタッチして使う、との指示も書かれていたのでそのようにして
タイトル画面のスタートボタンを押せば次のシーンへ遷移(遷移先はランダム)するようにオブジェクトをスタートボタンにアタッチしました。
この通りにやってみるとたしかにスタート画面に設置したスタートボタン(押すとランダムシーン遷移が動作する)から
シーン番号0 → 次のシーン(ランダムなシーン番号)へ遷移した後も
「DontDestroyOnLoad」の中にランダムにシーン遷移するオブジェクト自体は残り続けるのですが
※こいつを「RandomObjMan」と仮称します
スタート画面までは良かったのですが、次のシーンからその「DontDestroyOnLoad」の中に残っている「RandomObjMan」をどうすれば使えるのかがよくわかりません。
次のシーンにはスタートのシーンには存在していた 空のGameObject は無い=「RandomObjMan」が居ないので一体どうすれば・・・
プログラムを走らせている間は「DontDestroyOnLoad」の中に「RandomObjMan」はたしかに存在しているのですがそれを次のシーンからどのように使えば良いのかがわかりません。
また5年前のやり方よりもこっちのほうが簡単にランダムシーン遷移できるよ、といったアイデアがあればぜひ教えていただきたいです。
該当のソースコード
using UnityEngine; using UnityEditor; using System.Collections; using System.Collections.Generic; using UnityEngine.SceneManagement; public class RandomScene : MonoBehaviour { List<int> numbers = new List<int>(); void Start() { DontDestroyOnLoad(this); for (int i = 0; i < EditorBuildSettings.scenes.Length; i++) { numbers.Add(i); } numbers.RemoveAt(11); numbers.RemoveAt(SceneManager.GetActiveScene().buildIndex); //StartCoroutine("LoadLoop"); テスト用のコルーチン } public void RandomSceneChange() { int ransu = numbers[Random.Range(0, numbers.Count)]; numbers.Remove(ransu); SceneManager.LoadScene(ransu); Debug.Log(ransu); } }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
当てずっぽうで 空のGameObject を他のシーンにもコピーする、というのをやってみましたが重複しまくりで処理もおかしくなってもちろんダメでした。
補足
特になし

回答1件
あなたの回答
tips
プレビュー