此不能修改并不是真正意义上的不能修改,只是在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组件就可以点击禁止,否则禁止是灰色不可点击的。