我想知道是否可以在检查器窗口中锁定或覆盖缩放属性的 X 和 Y 坐标,以便更改一个坐标会立即更改另一个坐标,并且通过一个坐标进行擦洗会更改另一个坐标的值。如果是,如何实现?
最佳答案
正如@Eddge 所说,ExecuteInEditMode
属性是一种使其成为可能的方法(查看 documentation 了解更多信息)。
这是锁定 x
和 y
比例的概念验证(简单)实现。
编辑:要对其进行测试,请使用此代码创建一个新组件并将其附加到您要应用的对象。然后,设置/取消设置字段 isLocked
以控制行为。
using UnityEngine;
[ExecuteInEditMode]
public class AspectRatioLock : MonoBehaviour
{
public bool isLocked;
Vector3 prevScale;
void Start()
{
prevScale = transform.localScale;
}
void Update()
{
var scale = transform.localScale;
if (isLocked && scale.x != prevScale.x)
transform.localScale = new Vector3(scale.x, scale.y * scale.x / prevScale.x, scale.z);
else if (isLocked && scale.y != prevScale.y)
transform.localScale = new Vector3(scale.x * scale.y / prevScale.y, scale.y, scale.z);
prevScale = transform.localScale;
}
}
实际上有一个AspectRatioFitter
组件pre-buit in Unity ,但它适用于 RectTransform
,因此适用于 UI 元素。
关于c# - 是否可以在检查器窗口中锁定或覆盖游戏对象比例属性坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51042594/