この記事でのバージョン
Unity 5.2.2f1 Personal
はじめに
画面のアス比によって位置やサイズ調整などの処理をしたいって時、
いちいちゲームを再生するのは面倒ですよね。
今回はそんな時に使える方法で、
GameWindowのサイズを変えた時に処理を実行する方法です。
ExecuteInEditMode
一番の問題はUnityを再生していない時の処理方法ですが、
ExecuteInEditModeを使う事で簡単に実現できます。
using UnityEngine; using System.Collections; [ExecuteInEditMode] //これだけ! public class NewBehaviourScript1 : MonoBehaviour { }
UIAdjuster
んでExecuteInEditModeを使って作ったのが以下の
アス比に合わせてUIの位置やサイズを調整するクラス、UIAdjuster。
実際のUI調整はAdjustUIの中で行います。
上記コードではアス比をログで出しているだけなので、以下のような感じになります。
UIAdjusterの仕組みは至極単純で、アス比を保持しておいて
Updateのタイミングでアス比に変更があればAdjustUIを実行しているだけです。
ただし、Updateは再生中とは違い、常に実行されるわけではなく
Windowのサイズを変えた時など、特定のタイミングで実行されます。
なお、継承して使う前提なので各メソッドはprotected virtualになっています。
おわりに
NGUI等を使っていれば、そんなにUIの調整は必要ないとは思うんですが、
どうしても細かい修正したい場合に使えるやつでした。