为什么在MonoBehaviour函数类Awake, Start, Update,OnDestroy等 OnCollision是在没有修饰符的情况下编写的,并且不需要像在接口或抽象类中那样编写它们。
查看父类MonoBehaviour: Behaviour: Component:Object我什至没有看到这些函数的声明。
为什么在MonoBehaviour函数类Awake, Start, Update,OnDestroy等 OnCollision是在没有修饰符的情况下编写的,并且不需要像在接口或抽象类中那样编写它们。
查看父类MonoBehaviour: Behaviour: Component:Object我什至没有看到这些函数的声明。
System.Reflection没有在那里使用。第一次
MonoBehaviour在运行时访问脚本时(无论是 Mono 还是 IL2CPP),所有这些神奇的方法都会被缓存。如果你有
MonoBehaviour某种类似的魔法方法(同一个Update),那么它就会被添加到一个特殊的列表中。在游戏本身中,Unity 会遍历这个列表并调用这些神奇的方法。
如果这些方法是在基本抽象类/接口中定义的(并且有许多这样的魔术方法),那么在您的脚本中您将不得不重新定义它们,否则您只定义您需要的。而如果你不定义,那么 Unity 甚至不会尝试调用这些方法。
一切都很平淡。
访问修饰符始终存在,即使没有明确指定。如果未指定修饰符,则使用“默认”私有。
Link "<...> 默认情况下,对类成员和结构成员(包括嵌套类和结构)的访问级别是私有的<...>"