読者です 読者をやめる 読者になる 読者になる

unity study

Unityでサクッとモックを作れるようになることを目指して、基本的なテクニックを抑えていく過程を残すブログのつもりだったけど、今はただ自分のトラブルシューティングメモになってるブログ

Application.LoadLevel()でのエラーハンドリング

ステージ毎にシーンを分けて作っていて、そのシーンを

Application.LoadLevel("Stage" + n);

って感じで読み込んでいる。
何らかのミスでそのシーンが存在しない場合はエラーになるが、調べた感じだとうまいエラーハンドリングが見当たらない。
Exceptionをcatchできるわけでもないし、そもそもそのシーンが存在しているかどうかを調べる方法もないっぽい?
どうしたもんかなー、とぼんやり考えていて、結局こうすることにした。

IDisposable timer;

void Load()
{
    Application.LoadLevelAsync("Stage" + n);
    // x秒以内に読み込み完了しないということは、存在しないと判断する
    timer = Observable.Timer(TimeSpan.FromSeconds(x))
        .Subscribe(_ => {
            // エラーハンドリング処理
        });
}

// 読み込み先シーンから叩かせるメソッド
void OnLoaded()
{
    timer.Dispose();
}

タイマーの部分は別にコルーチンでも何でも。