我并不完全理解
我创建了一个默认场景,创建了一个球,并在球上创建了一个脚本,在Update的每一帧中检查
接下来,我添加了一个监听器脚本,它仅仅是在每一帧更新时检查球体上的
Transform.hasChanged
,所以我创建了一个简单的测试:我创建了一个默认场景,创建了一个球,并在球上创建了一个脚本,在Update的每一帧中检查
transform.hasChanged
。
为什么它每一帧都返回TRUE?
顺便说一下:我假设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
。毫不意外,它在每一帧都返回true。最初的回答。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!");
}
}
}