Unity 报错 EndLayoutGroup: BeginLayoutGroup must be called first

原文链接:https://blog.csdn.net/xmx5166/article/details/107758668

网络上查找排查:核心问题还是一句话就能解决,就是GUIUtility.ExitGUI();当然也有可能会踩坑(只能怪自己不怎么熟悉编辑器扩展),这一句话我加在OnInspectorGUI()末尾的时候,发现扩展面板不能使用了,后来细心查找并排查问题,发现是在点击一个按钮操作后爆出的错,所以将这句话添加到了按钮点击执行域里面了,然后问题就解决了

我的部分代码

void OnGUI()
    {
        EditorGUILayout.BeginVertical();

        ScrollPos = EditorGUILayout.BeginScrollView(ScrollPos);

        //绘制标题
        GUILayout.Space(10);
        GUILayout.Label("Create/Update Xml");

        //读取asset数据
        asset = EditorGUILayout.ObjectField("选取Xml数据", asset, typeof(XmlAsset), true) as XmlAsset;
        if (asset != null)
        {
            XmlName = asset.XmlName;
            root = asset.root;
            child = asset.child;
        }

        //xml的名字
        GUILayout.Space(10);
        XmlName = EditorGUILayout.TextField("XML Name", XmlName);
        if (!HasXmlNameContent())
        {
            EditorGUILayout.HelpBox("XML文件名不能为空!", MessageType.Error);
        }

        //根节点名称
        GUILayout.Space(10);
        root = EditorGUILayout.TextField("Root Name", root);
        if (!HasRootNameContent())
        {
            EditorGUILayout.HelpBox("根节点不能为空!", MessageType.Error);
        }

        //子节点信息
        GUILayout.Space(10);
        _serializedObject.Update();
        //检查是否有修改
        EditorGUI.BeginChangeCheck();
        //显示
        EditorGUILayout.PropertyField(_assetLstProperty, true);
        //当检查结束时应用最新修改数据
        if (EditorGUI.EndChangeCheck())
        {
            _serializedObject.ApplyModifiedProperties();
        }

        if (!HasChildContent())
        {
            EditorGUILayout.HelpBox("子节点不能为空!", MessageType.Error);
        }

        GUILayout.Space(10);
        isSaveAsset = GUILayout.Toggle(isSaveAsset, "是否保存数据为Asset资源");

        if (GUILayout.Button("Create/Update XML"))
        {
            if (CheckInputData())
            {
                CreateXml(XmlName);
                if (isSaveAsset)
                {
                    SaveAsset();
                    GUIUtility.ExitGUI(); //在这里添加这一句,报错消失
                }
            }
        }

        EditorGUILayout.EndScrollView();
        EditorGUILayout.EndVertical();
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值