У меня есть Новый проект с одним готовым экземпляром, который содержит один пустой Gameobject.Этот Gameobject имеет скрипт ниже.В Scene View test_f
(из игрового объекта) равно 0. То же самое в Prefab Mode .
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class OnValTest : MonoBehaviour
{
public bool test_bool = false;
public float test_f = 0.0f;
//private void OnValidate()
//{
// test_f++;
// Debug.Log("f: " + test_f);
//}
}
Когда я раскомментировал OnValidate функция Я видел эти два журнала:
f: 1
f: 1
Затем, когда я вошел в режим Prefab, я увидел это в своих журналах:
f: 1
f: 1
f: 1 <
Затем, когда я нажимаю на test_bool в моем инспекторе:
f: 1
f: 1
f: 1
f: 2 <
f: 3 <
f: 4 <
f: 5 <
f: 6 <
Наконец-то я изменил строку журнала на эту: Debug.Log("f: " + test_f + " name: " + gameObject.name);
и увеличил test_f
игрового объекта префаб-экземпляра (не из префаб-режима) до 100. Затем в префаб-режиме I Очистил консоль журнала , и я дважды щелкнул test_bool
:
f: 4 name: Child
f: 5 name: Child
f: 6 name: Child
f: 7 name: Child
f: 102 name: ChildNotPrefab
f: 5 name: Child
f: 6 name: Child
f: 7 name: Child
f: 8 name: Child
f: 103 name: ChildNotPrefab
Я могу понять, почему ChildNotPrefab вызвал OnValidate
(потому что он является потомком этого префабанапример), но почему существует четыре журнала из Child object
?
Почему существует так много журналов?