第2回unityroomゲームジャム
unityroomさんの一週間ゲームジャム第2回、
お題『転がる』に参加させていただきました。
ほかの参加者さんのブログを閲覧させてもらうと
自分が如何に何も考えていないかよくわかるけど、
そこはとりあえず今は気にしない方向で...。
今回のクラス構造はこんな感じでした。
右下の方、ゲームにADVモードを挟んだり
フェード演出からの非同期ロードしたりするモジュールなのですが
今回のゲームでは動いてない機能があるので
メモリを無駄に浪費しているかもしれません。
(でも分割するとCanvas増えちゃう....)
自分用Unityメモ:シーンロード時に処理を行う
新しくシーンを読み込んだ時に
何か処理をしたいときは、
OnLevelWasLoaded というAPIを使えばいいみたい。
……と、思っていたのですが、どうやらこれは旧型式で
5.4あたりから非推奨になったみたいです。
(しかも、そのうち消すから使うなって書いてあるよ。あるいは書いてあった。)
じゃあどうするかというと、
SceneManagerのデリゲートを使えばいいみたい。
(※デリゲートはメソッドの入る変数みたいなものです(語弊あり))
・activeSceneChanged //アクティブのシーンが切り替わったときに呼ばれる
・sceneLoaded //シーンがロードされたときに呼ばれる
・sceneUnloaded //シーンがアンロードされたときに呼ばれる
使い方の例としては……
void OnSceneLoaded(Scene loaded) { Debug.Log(loaded + "がロードされたよ"); }
こんな感じのメソッドを用意しておいて、
(メソッドの名前に決まりはないよ)
マネージャーのAwake()、Start()あたりに
SceneManager.sceneLoaded += OnSceneLoaded;
とか記述しておいてあげればロード時に処理をしてくれるはず。
今のゲームで使っているのは
sceneUnloadedの方で、シーン切り替え時に
使い終わったオブジェクトのプールを削除したりしてます。
■
ううっ、結局ブログを書く余裕の方が無いという...。
あと2日、完成まで至れるかどうか。