隐藏RectTransform inspector面板修改

此不能修改并不是真正意义上的不能修改,只是在inspector面板上不能修改,而且场景也不会保存这些配置,意思是你重新加载场景依然还是能在inspector面板上修改

驱动 RectTransform 意味着被驱动 RectTransform 的值由该组件控制。这些被驱动的值无法在 Inspector 中加以编辑(它们显示为已禁用)。此外在保存场景时也不会保存它们,这可防止不需要的场景文件更改。可设计一个组件来驱动RectTransform,无论何时该组件正在更改被驱动 RectTransform 的值,其都应首先调用 Clear 方法,然后使用 Add 方法来添加其正在驱动的所有 RectTransform。此外还应在该组件的 OnDisable 回调中调用 Clear 方法。

其中Add方法参数
object driver 驱动属性的对象
RectTransform rectTransform 要驱动的RectTransform
DrivenTransformProperties drivenProperties 要驱动的属性,选中多个属性可以用|

using UnityEngine;
using UnityEditor;
public class XPEditor{ 
static DrivenRectTransformTracker drivenRectTransformTracker = new DrivenRectTransformTracker();
    [MenuItem("XP/RectTransform/禁止",true)]
    static bool HideVerify()
    {
        var selectionObjs = Selection.gameObjects;
        if (selectionObjs == null||selectionObjs.Length==0)
            return false;
        else
        {
            foreach(var obj in selectionObjs)
            {
                var rect = obj.GetComponent<RectTransform>();
                if (rect)
                    return true;
            }
            return false;
        }
    }
    [MenuItem("XP/RectTransform/禁止")]
    static void Hide()
    {
 drivenRectTransformTracker.Clear();
         var selectionObjs = Selection.gameObjects;
        foreach (var go in selectionObjs)
        {
            var selectionRect = go.GetComponent<RectTransform>();
            if (selectionRect)
                drivenRectTransformTracker.Add(selectionRect, selectionRect, DrivenTransformProperties.All);
        }
        AssetDatabase.Refresh();
    }
    [MenuItem("XP/RectTransform/显示")]
    static void Show()
    {
        drivenRectTransformTracker.Clear();
        AssetDatabase.Refresh();
    }
}

将上面的脚本放入Editor文件中,然后Shift选中多个物体,只要选中的物体中有RectTransform组件就可以点击禁止,否则禁止是灰色不可点击的。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44806700/article/details/120282022