Unity驚愕の超速イテレーションデバッグ設定
何を言ってるのかわからないタイトルだが、ありのままに今起こったことを話す。
いつものようにUnityエディタで▶Playボタンを押したと思ったら、SD Unityちゃんが動いてたんだ。
何を言ってるのかわからないと思うが・・・とにかく▶Playボタンを押したその刹那それは「動いていた」んだ。
普通のUnityなら6秒だ。6秒かかる。少なくともいつものUnityなら、だ。
思わずストップウォッチで計測をした。計測不能だった。かろうじてその数字は0.2秒を示していたが、どうみてももっと速い。まさにその刹那、だ。
頭がどうにかなりそうだった( 喜
※ちなみに1刹那は1/75[sec] = 13.33ms<わかる人にはわかる数値。
それは GCCONF '20
GAME CREATORS CONFERENCE '20 (http://www.gc-conf.com/ )で公開された「4人のUnityエバンジェリストが独断で選ぶ、お勧め機能&Tips」の動画。
その中でUnityのエヴァンジェリスト 山村達彦氏 が、たった一カ所の設定を変えるだけで、Unityのデバッグイテレーションが激速になる方法を紹介している(某有名Unityブログの管理人でもある方です)。
先にも書いた通り、Unity上で▶Playボタンをクリックして実行開始まで従来6秒かかっていたプロジェクトが瞬間的に実行状態になる。
ほんとに瞬間なので。「え?えええ?」となります。
とりあえず気になる人は以下の11:12付近から見ることをお勧め。
https://www.youtube.com/watch?time_continue=674&v=Bsn6a91Eqwo&feature=emb_logo
それは Enter Play Mode Setting
設定箇所は以下。
Edit > Project Settings > Editor > Enter Play Mode Settings
Enter Play Mode Options (Experimental) に チェック入れ。
設定は以上。
どうなっているのか
すごく説明したいところだが、知りたい人は動画を見よう。
https://www.youtube.com/watch?time_continue=674&v=Bsn6a91Eqwo&feature=emb_logo
の14:38付近から解説されている。
なんか罠があるんじゃないの?話がうますぎる?
16:25付近から重要な説明があるので必ず見ておく方が良い。
■Unity2019.3以降
じゃないと使えない。
■Staticなデータが初期化されない。
初回起動時にコンパイラが変数0埋め前提をあてにしてるような実装があるとやばい。
※余談だが組み込み系なんかでは、これは電源ON時のメモリ状態依存になるので絶対に自前で初期化する(値不定前提)。
■シングルトンまわり
動画の19:10くらい(ry。
まぁこの辺はエラーがでればなんとなくわかるかもしれない。
とにかく肝は起動時に「 static変数が null ではない」ことがあるという点。
回避するキーワードは RuntimeInitialzeOnLoadMethodAttribute らしい。
動画見ると「なるほど」とわかるのでとにかく見よう。
■イベント登録まわり
前回実行時のイベント登録を自前で破棄しておき(OnDestroy())、次回実行の際にクリーンになるようにする。
■その他
スクリプタブルオブジェクト、OnEnable()/OnDisable()
動画を(ry
■「作ったものは自分で破棄する」
基本的にそのように処理を書いておけば問題ないとのこと。
この辺のしくみ、注意点などもきちんとフォローアップしてくれるのはさすがです。
この辺の情報がないと安心して使えないですからね。
Unity as a Library
実は動画冒頭でみんな大好き数学系担当(?) 安原祐二先生 がUnity as a Library について説明してくれている。
これは色々夢が広がりんぐで地味にすごい。
地味すぎて一般的なゲーム制作者には「ナニソレおいしいの?」的な感は否めない。
決して講演が地味なのではなく、お題がお題(?)なのでしょうがない感。
きちんとデモもわかりやすいのですけど、多分一般的なゲーム開発者には用途がピンとこない可能性。(私的には色々妄想が広がりますが
いつもは数学の動画等々で 安原祐二氏推しなんですが、今回は山村達彦氏のネタが強烈すぎて。
もうその後の動画見ないでUnity起動してこれ書いてるところ(スイマセン後編の方々。あとできちんと見ます;
とにかく Enter Play Mode Setting はヤバい
まじめな話、Bolt使ってると、その辺の処理も加算されて実行までの時間が遅めになる傾向があるんですよ。
Enter Play Mode Setting きちんと使えば開発効率がすごいことになりそうです( 喜
追記:当該記事のみの動画も上がってます。