Я явно не понимаю 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!");
}
}
}