Unity ゲーム再生までの時間を短くするEnter Play Mode
Unity上で開発中のゲームを再生すると、始まるまでにメチャクチャ遅かったりしませんか?
そういう時に再生までの時間を短くする方法を紹介したいと思います。
注意点も書いておきます。
Enter Play Mode
今回バージョンはUnity2012.2.1f1です。
やり方はとても簡単です。
Edit > Project Settings > Editor > Enter Play Mode Optionsにチェックを入れれば終わりです。
Enter Play Mode OptionsはEditorの下の方にあります。
チェックありとなしでどれくらい速さが違うのか実験してみます。
まずはチェックなしです。
チェックありだとすぐにゲームが起動しキャラクターのアニメーションが始まりました。
これはどうして早くなるかというと、チェックの下にある「Reload Domain」「Reload Scene」が関係しています。
Reload Domain
Reload Domainはスクリプトの状態をリセットしてくれるものだそうです。
これをオフにすることで毎回リセットする処理を省いてゲームの再生が早くなるそうです。
Reload Scene
先程のReload Domainがスクリプトをリセットするのに対し、こちらは再生すると既存のゲームオブジェクトをすべて破棄して、ディスクからシーンを再ロードするそうです。
シーンが複雑になればなるほどこの時間が長くなります。
なのでオフにすることでゲームの再生までの時間が短縮されます。
注意点
staticな値がリセットされない
Reload Domainはスクリプトの初期化を行ってくれているわけですが、それをオフにすることでstaticな値がリセットされなくなります。
具体的に実験してみます。
スペースキーを押したらstaticのintの値が増えていくようにしてみます。
このようなコードがあった場合、Reload Domainがオフだったらどのような挙動になるでしょうか。
ゲーム再生 > スペースキー押す > ゲーム停止 > ゲーム再開 > スペースキー押す
この流れでログを確認してみます。
いかがでしょうか?停止して再開してもcountの値はリセットされていないのがわかるかと思います。
これを回避するには[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]を使うと良いです。
ゲームを再生するときに指定した関数を呼ぶことができます。
これでInitCountという関数が起動時に呼ばれcountを0にしています。
実験してみます。
無事にstaticな値がリセットされているのが確認できました。
注意点として起動時に指定する関数はstatic関数にしてください。
staticなイベントがリセットされない
Unityではstaticイベントが多数あります。
Reload Domainが有効な場合(通常)、ゲーム再生が終了したタイミングで自動的に破棄されますが、Reload Domainがオフだと破棄されません。
ゲーム再生終了時のイベントApplication.quittingに処理を登録して実験してみます。
ゲーム再生停止を繰り返すたびにApplication.quittingに処理が追加されていき、ログに「ゲーム終わり」が一つずつ増えていくのがわかります。
これをリセットするには再生時にRuntimeInitializeOnLoadMethodで設定した関数を呼び出してイベントを破棄することで解消できます。
具体的にはこんな感じです。
start関数内で Application.quitting += _quitで処理を加えているのとは逆にApplication.quitting -= _quitで登録している処理を破棄しています。
このような感じで終了時のイベントの処理は破棄され、一度だけ実行されるのが確認できるかと思います。
このような注意点がありますが、Enter Play Modeを使うことでとても快適にUnityエディタ上でゲームを再生できます。
Unityの学習方法
Unity初心者の方にオススメの学習方法をいくつか紹介します。
Unity本【kindle unlimited】
私も利用しているAmazonが提供する電子書籍読み放題のサービスです。
月額980円で約200万冊以上が読み放題でとてもお得です。
また30日無料体験もできるのが魅力です。当然Unityに関する書籍もたくさん揃っています。
またC#関連の書籍や、プログラミングのものも多数あります。
プログラミング関連の書籍は値段が結構しますので、それらが無料で読めるのはかなりお得なサービスです。
30日無料体験もありますので気に入らなければその期間に解約すれば料金は発生しません。
通常のUnity本
kindle unlimitedは全部のUnity関連書籍が読めるわけではありません。
通常に購入しなければ読めない本もありますので、その中から私が参考になった書籍を紹介します。
Udemy
Udemyの動画講座にもUnity関連のオススメの動画がたくさんあります。
その中でも私が特に気に入っている動画を紹介します。
どの動画も初心者でも完成することが出来るように丁寧に解説しています。
オンラインで学習
質問が出来るおすすめのUnity学習方法ページです。
・Unityでゲーム作りたいけど何から初めたら良いかわからない。
・独学でゲームを完成させられるか不安。
・ゲーム開発でわからないことを一人で解消できない。
・入門書を一通りやってみたが次に何していいかわからない。
こんな人におすすめしたい内容になっています。
最後までご覧頂いてありがとうございました。
感想・コメントをどうぞ
- タグ:
- 小ネタ