今天想在编辑器界面添加一个按钮,可以选择文件名,免得自己手打。
EditorGUILayout.BeginHorizontal();
mItemPrefabPath.stringValue = EditorGUILayout.TextField("ItemPrefabPath", mItemPrefabPath.stringValue);
if (GUILayout.Button("选择"))
{
string path = EditorUtility.OpenFilePanel("选择文件", "", "");
if (!string.IsNullOrEmpty(path))
{
mItemPrefabPath.stringValue = path;
}
}
EditorGUILayout.EndHorizontal();
可是当我打开文件夹并且关闭后,就报了如下的错误。
EndLayoutGroup: BeginLayoutGroup must be called first. UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr) (at /Users/bokken/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:179)
后来查了下,需要在打开文件夹后添加下面一条代码:GUIUtility.ExitGUI();
EditorGUILayout.BeginHorizontal();
mItemPrefabPath.stringValue = EditorGUILayout.TextField("ItemPrefabPath", mItemPrefabPath.stringValue);
if (GUILayout.Button("选择"))
{
string path = EditorUtility.OpenFilePanel("选择文件", "", "");
if (!string.IsNullOrEmpty(path))
{
mItemPrefabPath.stringValue = path;
mItemPrefabPath.serializedObject.ApplyModifiedProperties();
}
GUIUtility.ExitGUI(); //就是这里
}
EditorGUILayout.EndHorizontal();
然后就不报了,特此记录一下。