我正在创建自定义布局组,我想控制子对象上的RectTransform
。我想在孩子的RectTransform
上锁定一些字段,就像使用canvas或Unity的Horizontal或Vertical组一样,这样它就无法修改。
我需要同样的效果。你可以在孩子的qazxsw pour上看到这条消息:由Horizontal LayoutGroup驱动的一些值
RectTransform
我发现了一半:
[ExecuteInEditMode]
还有其他想法吗?
这是通过public void Update()
{
#if UNITY_EDITOR
if (!Application.isPlaying)
{
/* Todo => update child's positions here. */
}
#endif
}
API完成的。
驱动RectTransform意味着驱动的RectTransform的值由该组件控制。无法在Inspector中编辑这些驱动值(它们显示为已禁用)。保存场景时也不会保存它们,这可以防止不需要的场景文件更改。
每当组件更改驱动的RectTransforms的值时,它应首先调用Clear方法,然后使用Add方法添加它正在驱动的所有RectTransforms。还应在组件的OnDisable回调中调用Clear方法。
文档中没有示例,但下面是如何使用它:
doc
与public RectTransform targetRC;
UnityEngine.Object driver;
void Start()
{
DrivenRectTransformTracker dt = new DrivenRectTransformTracker();
dt.Clear();
//Object to drive the transform
driver = this;
dt.Add(driver, targetRC, DrivenTransformProperties.All);
}
变量相关联的RectTransform
现在将被锁定,无法从编辑器中修改。它现在应该说“有些值是由另一个对象驱动的”。您可以使用targetRC
指定要锁定的变量。
这是执行此代码后的样子: