我有一个 New Project ,其中一个预制实例包含一个空的Gameobject。该游戏对象具有以下脚本。在场景视图中(游戏对象的test_f
等于0。在 Prefab模式中相同。
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。然后在预制模式下,我清除了日志控制台,我点击了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
(因为它是该Prefab实例的子代),但是为什么有 四个日志 的?
为什么会有那么多日志?