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);
我想知道 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);