問題
実行開始時にセーブデータを読み込み、
それを元に初期化(プレハブをインスタンス化させたり、ゲームのパラメータを決める)するのが目的。
(前提として、セーブデータを読み込むためのクラスが1つ、そのデータを元に初期化を行うクラスが複数あります)
初期化するクラスのStartメソッドが、セーブデータを読み込む前に呼ばれてしまってはいけないので、
『publicなフラグを用意し、そのフラグがtrueになるまでは
初期化の処理が待機されるようにすればいい』と考えました。
yield return new WaitUntil()
で出来るようなのですが、以下のようなエラーが出てしまいます。
コルーチンをあまり扱ったことがないのですが、
何か特別な宣言や修飾子が必要なのでしょうか?
###エラーログ
error CS1503: Argument 1: cannot convert from 'bool' to 'System.Func<bool>'
google翻訳:エラーCS1503:引数1:「bool」から「System.Func <bool>」に変換できません
###ソースコード
MonoBehaviourを継承した普通のクラスの中
C#
1//Startの代わり。このクラスを扱うスクリプト側から呼び出して変数の初期化をする。 2public IEnumerator Alternative_Start(){ 3 yield return new WaitUntil( Hold.Flgs.saveDataLoaded );//ここでエラー 4 ...変数の初期化(セーブデータを適応させる)... 5}
(理屈はあまり理解できていないけど)シーンを切り替えても値を保持してくれるやつ
C#
1public class Hold : MonoBehaviour{ 2 3 public static Hold Flgs = new Hold(); 4 5 public bool saveDataLoaded = false; 6 //他にも変数は宣言してあるが省略 7 8 public void Reset(){ 9 saveDataLoaded = false; 10 } 11 12}
セーブデータの読み込みが終わったらフラグを真にするメソッド。
C#
1void Start(){ 2 ...データ読み込み... 3 Hold.Flgs.saveDataLoaded = true; 4}
(Unity2019)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。