Unity 报错:EndLayoutGroup: BeginLayoutGroup must be called first

今天想在编辑器界面添加一个按钮,可以选择文件名,免得自己手打。

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();

然后就不报了,特此记录一下。

—— 完 ——
相关推荐
评论

立 为 非 似

中 谁 昨 此

宵 风 夜 星

。 露 , 辰

文章点击榜

细 无 轻 自

如 边 似 在

愁 丝 梦 飞

。 雨 , 花