gpt4 book ai didi

c# - 如何锁定 RectTransform 的字段

转载 作者:太空狗 更新时间:2023-10-29 20:12:30 29 4
gpt4 key购买 nike

我正在创建自定义布局组,我想控制子对象上的 RectTransform。我想锁定 child 的 RectTransform 上的一些字段,就像在使用 Canvas 或 Unity 的水平或垂直组时一样,这样它就不能被修改。

我需要同样的效果。您可以在 child 的 RectTransform 顶部看到此消息:Some values driven by Horizo​​ntalLayoutGroup

enter image description here

我找到了一半:

添加 [ExecuteInEditMode] 然后:

public void Update()
{
#if UNITY_EDITOR
if (!Application.isPlaying)
{
/* Todo => update child's positions here. */
}
#endif
}

还有其他想法吗?

最佳答案

这是通过 DrivenRectTransformTracker 完成的API。

来自doc :

Driving a RectTransform means that the values of the driven RectTransform are controlled by that component. These driven values cannot be edited in the Inspector (they are shown as disabled). They also won't be saved when saving a scene, which prevents undesired scene file changes.

Whenever the component is changing values of driven RectTransforms, it should first call the Clear method and then use the Add method to add all RectTransforms it is driving. The Clear method should also be called in the OnDisable callback of the component.

文档中没有示例,但下面是如何使用它:

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);
}

链接到 targetRC 变量的 RectTransform 现在将被锁定,不能从编辑器中修改。它现在应该说类似“某些值由另一个对象驱动”。您可以使用 DrivenTransformProperties指定要锁定的变量。

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

enter image description here

关于c# - 如何锁定 RectTransform 的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49112848/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com