青空の月

PHP, Unity, C#, アプリ開発関連について。

GUIの横幅をマウスのドラッグで変更する

UnityでEditor拡張機能を作っていると、LabelFieldやTextFiledなどGUIでwidthが足りなくて見きれてたりして、何て書いてあるか分からない時がある。

windowの横幅を取得してその何%とかで指定すれば割と動的にできる。

 

今回はマウスでドラッグしてTextFieldなどのGUIの横幅を調整できる様にしてみた。

 

まずこんな感じのGUIを作ってみた。下の方のヤツは左側が見切れている。

f:id:masa795:20131207233530j:plain

 

TextFieldの間にマウスを移動させるとカーソルが変わる。コレは

EditorGUIUtility.AddCursorRect(r, MouseCursor.ResizeHorizontal);

でカーソルを変更させている。

f:id:masa795:20131207233633j:plain

 

マウスを左右にドラッグさせると左側のGUIの横幅が変わる。下のやつも見えた。

f:id:masa795:20131207233830j:plain

 

 

ちょっと書くのメンドイけど動的に変えられるのはちょっと便利かも。

もっとイイ書き方もできるか。

 

 

今回使用したスクリプト。

GUIの横幅をマウスのドラッグで変更する

 

 

Inspectorで表示される変数の文字列に変換する

Unityでは変数名をインスペクター上に表示すると自動的に見やすくしてくれる。

 

小文字と大文字の間にスペースを入れてくれたり、変数名の頭が「_」や「m_」、「k」で始まる場合は自動的に除いてくれる。

f:id:masa795:20131124233620j:plain

 

ObjectNames.NicifyVariableNameは文字列をこのルールに従って変換してくれる。

 

string[] list = { "_myValue1", "m_myValue2", "kMyValue3" };
string output = "";
foreach (string temp in list)
    output += temp +"=>"+ObjectNames.NicifyVariableName(temp) + "\n";
Debug.Log(output);

 

これを実行すると、インスペクトーに表示されるものと同じ値が取得できる。

_myValue1=>My Value 1
m_myValue2=>My Value 2
kMyValue3=>My Value 3

 

正直、利用シーンは思いつかないけど。。。

何かに役立つかな。

 

 

http://docs-jp.unity3d.com/Documentation/ScriptReference/ObjectNames.NicifyVariableName.html