[Unity] 浅析GameObject与Component和Game World

时间:2024-03-15 14:34:13

 首先,理解一下Unity引擎中的基本概念,游戏世界(Game World)指的是一系列游戏场景(scenes)的集合,对于三维游戏而已,空间由一个3维坐标系表示。而游戏对象(GameObject)则存在于其中,它的显示效果和交互行为则由各种各样的组件(Component)实现。

下面分别分析一下GameObject、Component和World

游戏对象(GameObject)

GameObject对象是游戏场景的基本单位GameObject表示游戏场景中的一个实现某种作用的一个的实体(不一定可见),GameObject之间可以独立的存在,也可以存在层级关系,隶属与某一对象的子对象。这种父子关系使得我们可以定义除世界坐标系之外的本地坐标系统,即以父对象为参照原点。


[Unity] 浅析GameObject与Component和Game World

层级面板每一项都是一个GameObjec的实例对象,存在子对象的可以展开

组件(Component)

只有GameObject是没有意义的,它必须要有实现功能的组件(Component),每一个GameObject至少需要有一个Transform组件,它定义了GameObject对象在场景中的坐标,旋转,和缩放程度。其它常见的Unity内置的组件有渲染器,碰撞体,刚体等等,一个游戏对象的组件定义了游戏对象在场景中如何表示和交互。

         [Unity] 浅析GameObject与Component和Game World

     所有游戏对象都需要一个Tranform组件

游戏世界(World)

帧率(FPS)则指的是每秒游戏引擎包括运行游戏代码和将摄像机的场景渲染到屏幕渲染的循环次数。已经了解Unity编程的读者应该对GameObject的Update()方法不陌生,unity每一帧都会为每一个游戏对象调用该方法,所以一些复杂度过高计算应该尽量避免在Update函数体里进行;此外帧率可能因机器的性能的不同而改变,所以游戏的对象的行为改变不能依赖于帧率,而是应该依靠时间这个机器无关的不变量,根据每一帧的间隔时间对行为做改变。

这篇文章是根据自己学习Unity的阶段性总结,没有涉及过多代码;在下一篇文章将对具体到脚本编写时对场景中游戏对象的查找,组件的获取与组件间通信的常见Api做介绍。如有哪里理解不正确,恳请指正。