昨日は22時まで残業のため、一瞬しか作業できなかった。クゥ。
作業内容は以下。
- 最終ステージから最初のステージへ戻れるように
正直、わざわざブログ書くほどの内容ではないが…(今までだってそうだろというツッコミはナシでお願いします)
3月14日
最終ステージから最初のステージへ戻れるように
今までのところでは、最終ステージの End ブロックに触れても何も起きませんでした。これを最初のステージへ戻ってループするようにします。
Unity のスクリプトリファレンスによると、sceneCountInBuildSettings という static 変数が予め定義されており、ここに BuildSettings に登録したシーンの総数が格納されているようですので、これを利用します。
BarController.cs の OnCollisionEnter 部分を変更します。
1 2 3 4 5 6 7 |
if (collision.gameObject.CompareTag ("Finish")) { ++SceneNumber; if (SceneNumber == SceneManager.sceneCountInBuildSettings) { SceneNumber = 0; } SceneManager.LoadScene (SceneNumber); } else 続く... |
++SceneNumber の下に if 節を挟み、遷移するシーン番号とシーン総数が一致した場合に、シーン数を0にリセットします(最初のシーンは0番です)。これで何回でもループできます。
ちょっとだけリファレンスに個人的ハマりポイントがあった。sceneCount という変数の説明に「The total number of scenes.」と書いてあるので、初めこれを使おうとしたがうまく行かなかった。試しに Debug.Log で出力してみたら常に1になっており、シーンをロードする一瞬2になる。まさかと思って調べていけば、現在ロードされているシーンの総数とのこと。もうちょっと誤解のない書き方があるのではという気がしたが、英語力が足りないだけかもしれない。
“Avoid The Walls 開発日記 4” への2件のフィードバック