クラゲ日記スマートフォン用の表示で見るクラゲ日記UnityのTipsなど技術関連がメイン。この広告は、90日以上更新していないブログに表示しています。2015-11-08【Unity】SerializeFieldなキャッシュ変数をビルド前にキャッシュするこんにちは。パネルの中に複数のボタンが置かれるUIなど特にそうですが、Sceneに配置する個々のオブジェクトが階層化されていくことがあります。いう場合、UIパネル内のボタン文字列をメニュー選択項目に合わせて変更する場合など階層下の子に何度もアクセスする場合が多くなります。取得するのは無駄ということで、変数をキャッシュするモチベーションが生まれるわけです。"Button2"という2つのボタンをもつUIパネルオブジェクトを制御するスクリプト(HogePanel)を考えると、こんな感じにAwake();でキャッシュを初期化するのが一般的かと思います。}...}これはこれで悪くないのですが、ビルド前から分かっている参照対象ならビルド前に初期化出来るはずです。いうことで次のような方法を試してみました。SerializeFieldに出来るものならなんでもOKといったところです。継承されるオレオレMonoBehaviourクラス(以前の記事のTransCacheBehaviourの改良です)です。Scene中のキャッシュ変数を全て初期化しなおすためのEditor拡張クラスです。ショートカットキーを作ってキャッシュをしなおすようにしておきます。}...}かなりシンプルですが、準備のクラスは以上2つです(MyCommonEditorWindowはAssets/Editor以下に入れないとダメかも)。}...}こうなります。refleshed."と表示されシーン中のオブジェクトのキャッシュが初期化されます。Awake();でのキャッシュ初期化も、正直大したコストではないとは思いますが、数が増えればバカには出来ませんし、出来るんだからビルド前にやっておこうか、という感じでした。...注意点としては、うっかり[SerializeField]を付け忘れるとログも正しく表示されるのに実行時はnullになっていることです。一度慣れればミスしても症状からすぐ想像が付くようになるのですが......。結果のメモのようなものです。月別アーカイブはてなブログをはじめよう!kurage-createさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。