【发布时间】:2019-09-25 13:31:00
【问题描述】:
我显然不懂Transform.hasChanged并创建了一个简单的测试:
我创建了一个默认场景,创建了一个球体,并在球体上创建了一个脚本,它只检查更新的每一帧 transform.hasChanged。
为什么每帧都返回 TRUE?
FWIW:我假设 Unity 在检测到变换更改时将值设置为 TRUE,并在帧完成后重置为 FALSE。但这似乎没有发生。 我到底错过了什么?
using UnityEngine;
public class TestHasChanged : MonoBehaviour
{
void Start() { }
void Update()
{
if (transform.hasChanged) Debug.Log("Sphere hasChanged = TRUE!");
else Debug.Log("Sphere hasChanged = FALSE!");
}
}
接下来,我添加了一个侦听器脚本,该脚本仅在更新的每一帧中检查球体上的hasChanged。毫不奇怪,每一帧都是如此。
public class HasChangedListener : MonoBehaviour
{
public GameObject target; // the Sphere GO
void Start() {}
void Update()
{
if (target.transform.hasChanged) {
Debug.Log("HasChangedListener::Update: hasChanged = TRUE!");
} else {
Debug.Log("HasChangedListener::Update: hasChanged = FALSE!");
}
}
}
【问题讨论】: