2017-03-18 8 views
1

現在、エディタ拡張機能を使用していて、画像を使用してカスタムボタンを追加することにしました。このレイアウトは、水平レイアウトグループを使用してテキストフィールドと同じ行に配置されます。ユニティエディタのGUIテキストの位置がずれる

残念ながら、テキストフィールドは中央に配置されなくなります。

enter image description here

ここ問題

//Displays absolute root path 
EditorGUILayout.SelectableLabel("Root Directory: " + RootPath, EditorStyles.miniLabel, GUILayout.MaxHeight(16)); 

//Creates BuildPath 
DesiredPathType = (PathType)EditorGUILayout.EnumPopup(new GUIContent("Path Type"), DesiredPathType); 

//BuildName TextField 
BuildName = EditorGUILayout.TextField(new GUIContent("Build Name"), BuildName); 

//OutputPath directory selector 
GUILayout.BeginHorizontal(); 
GUIStyle Style = EditorStyles.textField; 
Style.alignment = TextAnchor.UpperLeft; 
OutputPath = EditorGUILayout.TextField(new GUIContent("Output Path"), OutputPath, Style); 

Style = GUIStyle.none; 
Style.padding = new RectOffset(0, 0, 2, 0); 
GUILayout.Button(new GUIContent(FolderIcon), Style, GUILayout.MaxHeight(16), GUILayout.MaxWidth(19)); 

GUILayout.EndHorizontal(); 

//SubFolders toggle 
Subfolders = EditorGUILayout.Toggle(new GUIContent("Subfolder per Platform"), Subfolders); 

具体的には、この部分

//OutputPath directory selector 
GUILayout.BeginHorizontal(); 
GUIStyle Style = EditorStyles.textField; 
Style.alignment = TextAnchor.UpperLeft; 
OutputPath = EditorGUILayout.TextField(new GUIContent("Output Path"), OutputPath, Style); 

Style = GUIStyle.none; 
Style.padding = new RectOffset(0, 0, 2, 0); 
GUILayout.Button(new GUIContent(FolderIcon), Style, GUILayout.MaxHeight(16), GUILayout.MaxWidth(19)); 

GUILayout.EndHorizo​​ntal()と問題のコードです。

FolderIconイメージ

enter image description here

+0

テキストフィールドが中央に配置されなくなりますか?期待される外観は何ですか?たぶんあなたは私たちにスケッチを見せることができます。 – zwcloud

+0

左側に追加した問題、右側に希望する – QFSW

+0

私はまだ問題を把握することができません。左右の唯一の違いは、 'FolderIcon'の存在です。 – zwcloud

答えて

1

は、この(UI-のみ)試してみてください。

//dummy local variables 
string RootPath = null; 
PathType DesiredPathType = PathType.Abs; 
string BuildName = ""; 
string OutputPath = ""; 
bool Subfolders = false; 

//Displays absolute root path 
EditorGUILayout.SelectableLabel("Root Directory: " + RootPath, EditorStyles.miniLabel, GUILayout.MaxHeight(16)); 

//Creates BuildPath 
EditorGUILayout.EnumPopup("Path Type", DesiredPathType); 

//BuildName TextField 
BuildName = EditorGUILayout.TextField(new GUIContent("Build Name"), BuildName); 

//OutputPath directory selector 
GUILayout.BeginHorizontal(); 
GUIStyle Style = EditorStyles.textField; 
Style.alignment = TextAnchor.UpperLeft; 
OutputPath = EditorGUILayout.TextField(new GUIContent("Output Path"), OutputPath, Style); 

GUILayout.Button(new GUIContent("O"), EditorStyles.label, GUILayout.MaxHeight(16), GUILayout.MaxWidth(19)); 

GUILayout.EndHorizontal(); 

//SubFolders toggle 
Subfolders = EditorGUILayout.Toggle(new GUIContent("Subfolder per Platform"), Subfolders); 

それは問題の原因となったGUIStyle.noneました。上のコードは代わりにEditorStyles.labelを使用しています。しかし、私はなぜそれが動作するのか分からない。理由を調べるには、逆コンパイルされたコードEditorGUILayout.Textfieldを調べてください。

あなたのコードがEditorStyles.textFieldを直接変更するのは間違いです。これにより、すべてのスタイルが変更されますTextField。新しいGUIStyleオブジェクトを作成するには、new GUIStyle(EditorStyles.textField)を呼び出す必要があります。

+0

多かれ少なかれ動作するようです。イメージは私の好みのために小さすぎるようになりますが、私はそれを回避することができます – QFSW

関連する問題