我们通常会有当一个UI大小发生变化时去触发某个事件的需求。unity提供了这些事件,在UnityEngine.EventSystems.UIBehaviour下。当我们新建一个脚本继承自UnityEngine.EventSystems.UIBehaviour类,并且将脚本挂载在需要监测大小变化的UI物体上时,当UI大小发生变话时,就会推送消息给OnRectTransformDimensionsChange函数中。我们重写OnRectTransformDimensionsChange内容。代码如下:
public class ListenerRectChange : UnityEngine.EventSystems.UIBehaviour
{
public UnityAction RectTransformChangeAction;
protected override void OnRectTransformDimensionsChange()
{
base.OnRectTransformDimensionsChange();
RectTransformChangeAction?.Invoke();
}
}
同样我们打上override后会发现有很多重写事件。比如OnBeforeTransformParentChanged,OnTransformParentChanged等。可能对我们的需求有帮助。
测试验证:改变物体的scale不会触发上述函数。