最新のデモと完全なRead Me
移動/リサイズのWebplayerデモ
スケール/Anchorの Webplayerデモ
詳細:
ラインタイム時に、UIウィンドウとオブジェクトの移動およびリサイズを可能にするスクリプト集です。下の「同梱されているスクリプト」で各メソッドを解説しています。これらはUnityの新UIシステム向けの解説です。バージョン4では既存スクリプトのほとんどを全面的に見直しており、スクリプト単体をメインコントローラーとして使用できます。
バージョン5ではCancasがScreen Spaceに設定されないよう限定した機能(オーバーレイとmovement muliplierの設定)を追加してあります。
スクリプトの特長:
シンプル:
オブジェクトにアタッチするための単純なスクリプトです。
カーソルにジャンプさせない:
オブジェクトをカーソルで操作するとき、中央にジャンプしなくなります。隅からオブジェクトをドラッグする時には、その隅からドラッグできます。
スムーズな動作と間隔を置いた動作:
オブジェクトの移動とリサイズをスムーズにするか、指定の間隔を置いて処理するかを選択できます。デフォルトではスムーズに設定されていますが、グリッドベースのシステムを使用している場合や配置・整列を簡略に処理したい場合には、間隔を置く方式は有用です。
境界とインセットのサイズはカスタマイズ可能:
境界の太さとインセットは変数で容易にカスタマイズできます。ボーダーはリサイズに使います。インセットは移動に使います。この2つを連動させる設計が容易に実現できます。
最小サイズ設定:
オブジェクトの垂直方向と水平方向の最小サイズを設定できます。これを使えば、小さくしすぎて戻せないなんてことは、意図的にそうしない限り、もうありません。
イベントに対応させやすい:
ウィンドウを意図したとおりに動作させるため、イベントに従って使用します。スムーズな動作と間隔を置いた動作を選択できるようにしたい場合はボタンもしくはトグルだけで処理できます。ウィンドウの位置を一時的に固定し、後で解除できるようにしたい場合もボタン1つで思いのままです。あるウィンドウの中で、何も移動させることなく自由にドラッグできるようにしたい場合はポインター付きパネルのEnter/ Exitイベントで処理できます!
全スクリプトにコメント付き:
スクリプトがどのように動作するか知りたい場合はコメントを読めばOK。アドオン作成や変更にも役立つことでしょう。
カスタマイズできるカーソル(制限あり):
カーソルが移動/リサイズできるポジションに収まらない場合は、自分で画像を読み込ませてカーソルとして使用します。
スクリーン/親への固定:
オブジェクトが移動やリサイズによってスクリーンもしくは親からはみ出さないよう制限を加えます。完全に任意の設定です。
シングルコントロール・スクリプト:
レイキャスト、カスタムカーソル、他スクリプトの有効化をコントロールするために追加した新スクリプトです。
*バージョン5の新機能*
Unity 5:
公式にUnity 5に対応!
Movement multiplier:
マウスの動きに対応した移動もしくはリサイズの倍率をカスタマイズできます。
同梱スクリプト:
Move:
このスクリプトを組み込んだオブジェクトはドラッグで移動します。
MoveParent:
このスクリプトを組み込んだオブジェクトの直属の親がドラッグで移動します。
MoveOther:
離れたオブジェクトもしくはこのスクリプトを組み込んだオブジェクトと関係を持たないオブジェクトがドラッグで移動します。直接の親子関係よりも遠い関係に用いることを想定していますが、他の独創的な使い方があるかもしれません。
Resize:
このスクリプトを組み込んだオブジェクトは境界線や角をドラッグするとリサイズできます。
ResizeParent:
このスクリプトを組み込んだオブジェクトの直属の親をドラッグでリサイズできます。
ResizeOther:
離れたオブジェクトもしくはこのスクリプトを組み込んだオブジェクトと関係を持たないオブジェクトをドラッグでリサイズできます。直接の親子関係よりも遠い関係に用いることを想定していますが、他の独創的な使い方があるかもしれません。
BringToFront:
クリックで当該オブジェクトおよびその子をUIオーバーレイの手前に表示します。
注意:この機能は上に紹介したすべてのスクリプトにも含まれています。このスクリプトは、オブジェクト自体、親、そのまた親にスクリプトをアタッチしていないにも関わらず、UIオーバーレイの手前に表示したいという場合にのみ必要になります。
DisableMoveResize:
Move and Resizeシリーズのリファレンスとして用いるスクリプトです。このスクリプトをアタッチしたオブジェクトをクリックすると、当該シリーズのアクションが無効化します。当該オブジェクトにのみ作用し、子や孫には影響しません。
ScaleHorizontal:
ドラッグで2つのオブジェクトを水平にスケールします。片方は太く、もう片方は細くなります。
ScaleVertical:
ドラッグで2つのオブジェクトを垂直にスケールします。片方は高く、もう片方は低くなります。
Anchor:
このスクリプトを組み込んだオブジェクトに、1つのオブジェクトのポジショニング/やアライメントをアンカーします。ユーザーはインスペクターのアライメントとポジショニングを定義することも、その時点でのオブジェクトのアライメントとポジショニングを使用することもできます。
MaximizeMinimizeRestore:
オブジェクトを親もしくはスクリーンのサイズまで最大化、デフォルトもしくはユーザーが定義したポジションとサイズに最小化できます。オリジナルのポジションとサイズにリストアすることもできます。
PushPull:
定義した分まで、1つのオブジェクトで他のオブジェクトもしくはその角を押し、その後引き戻すことができるようにします。アンカーに似ていますが、さらに多彩な動作を実現できます。
Ignore:
レイキャスティング用のリファレンスとして使用します。このスクリプトをアタッチしたオブジェクトは、裏のオブジェクトを戻すレイキャストから無視されます。
UIController:
他のスクリプトのレイキャスティングと有効化を操作します。また、カーソルのポジションに基づいて適切なカスタムカーソルを設定します。
重要:
これらのスクリプトはマウス操作向けに作成したものなので、そのまま他の形状のコントローラーで使用しても正常に動作しない可能性があります。
これらのスクリプトはScreen Spaceにセットされた単一のキャンバスで、デフォルトのオーバーレイ設定でテストしました。キャンバスの設定を変更した場合、スクリプトが正常に動作しないおそれがあります。