如何锁定RectTransform的字段

问题描述 投票:5回答:1

我正在创建自定义布局组,我想控制子对象上的RectTransform。我想在孩子的RectTransform上锁定一些字段,就像使用canvas或Unity的Horizo​​ntal或Vertical组一样,这样它就无法修改。

我需要同样的效果。你可以在孩子的qazxsw pour上看到这条消息:由Horizo​​ntal LayoutGroup驱动的一些值

RectTransform

我发现了一半:

然后添加enter image description here

[ExecuteInEditMode]

还有其他想法吗?

c# unity3d unity5
1个回答
6
投票

这是通过public void Update() { #if UNITY_EDITOR if (!Application.isPlaying) { /* Todo => update child's positions here. */ } #endif } API完成的。

来自DrivenRectTransformTracker

驱动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指定要锁定的变量。

这是执行此代码后的样子:

DrivenTransformProperties

© www.soinside.com 2019 - 2024. All rights reserved.