Unity的游戏对象只是面向对象编程中对象的一个​​完美例子?

Unity's game object is just a perfect example of objects in Object-Oriented Programming?

我想知道 Unity 中游戏对象在 OOP 语言方面的实际表示。

我把这句话说出来,我想知道它是否正确:

作为 Unity 层次结构的一部分被发现的游戏对象不过是一个单一对象,其字段成员是引用其他对象的变量,这些对象被称为 "components"

第二个问题:

假设这是正确的,这些对象是 OOP 方面的实际对象,即它们是 "instances of classes",它们何时被实例化以及何时被垃圾收集(通常)?

Unity 游戏的主要构建块是 "GameObjects",它们根据 "object composition" 工作,这是一种面向对象的编程原则。但是,在我看来,你不应该将它们视为 类,它可以是 derived/inherited/overrided,而是像用 C# 或 JS 编写的 类 的容器或组,它们在一个物理对象中一起工作,在 OO 中方式。

GameObject 在场景启动期间或当您尝试通过代码实例化它们时实例化,例如: Instantiate(myGameObject, Vector3.zero, Quaternion.identity);

当您执行以下操作时,它们将被垃圾回收:

  • 切换到另一个场景
  • 退出game/application
  • 致电Destroy(instantiatedGameObject);