【Unity开发】GameObject

GameObjectUnity中一个很重要的角色。对GameObject学习能够让我们更好的进行Unity开发,今天我们就来学习一下GameObject这个概念——

 

在我们的Unity游戏中每一个对象都是一个GameObject,但是没有我们的指示,这些GameObject对象不会自己做任何事情。GameObject就像一个可以由我们自己定义的容器,我们让它包含什么样的属性,它就是一种什么样的GameObject——一个角色或者一个特效等等。

    好的,这里就有一个问题了,既然游戏中的每个对象都是一个GameObject,我们又是如何来区分它们呢?

    前面我们已经说过,GameObject就是一个容器。在这个空箱子中放不同的东西(属性),就组成了不同的对象类型。也就是说,游戏中需要什么的元素,我们都可以通过向GameObject中添加组件(Component)的方式来实现,当然,我们还可以通过脚本(Script)来创建自定义的组件。

 

GameObject和组件(Componet)的关系

前面说了,一个GameObject,我们可以根据需要给他添加各种不同的Componet来实现我们预期的效果。当我们创建一个新的GameObject的时候都会自带一个Transform(这个Componet包含了位置,旋转,缩放属性),我们可以修改这些属性。

Transform Component

Transform Component是最重要的一个Component,因为所有的GameObject的使用要涉及到Transform的属性(每个游戏对象在游戏世界中的表现,都要设置其位置,旋转,缩放的)。

【Unity开发】GameObject

 1

这里需要说明一下,在Unity游戏场景中,我们不可能创建一个不包含任何Transform的空GameObject。如果一个GameObject而不包含任何Transform Component,那么这个GameObject只能用来存储数据,而不能在游戏场景中显示。

 

其他组件

Transform ComponentGameObject来说是相当重要的一个组件,但是对一个GameObject来说,他除了需要一个Transform组件之外,一般来说,我们还会给他挂上其他的一些组件(比如:button的点击响应、动画效果甚至是我们自己定义的一些组件)

 

组件的使用

通过上面的学习,我们已经知道了GameObjectComponent的一些概念和它们之间的关系。了解只是起步,真正应该怎么去使用它们呢?接下来,我们就来学习一下他们的使用过程。

 

添加组件

Unity的菜单栏,我们看到有一项Component,我们可以通过这一菜单项来添加Component给某一个GameObject

【Unity开发】GameObject

 

 2

       在这个菜单项的下拉列表中我们也可以看到具体的Component有哪些。

                                     【Unity开发】GameObject

 

 3

接着Unity的第一篇博客中的例子,我们向之前创建的GameObject中添加一个RigidbodyComponent(一个物理组件Component——Physics——Rigidbody),运行这个例子,看看与添加Rigidbody之前的例子有什么区别呢?(对,当我们运行起来时,发现场景中的GameObject受到重力影响,出现了由慢向快开始下落的效果,OK,添加组件成功!)

 

编辑组件

       我们可以在Inspector中看到GameObject多了一个Rigidbody的属性信息,在这里,我们可以根据自己的需要去修改新添加Component的属性。

【Unity开发】GameObject

 

 4

       当然不同的Component有不同的属性供我们操作,这个我们可以自己去看看。

 

移除组件

       在开发过程中,当我们需要移除一个Component时,该怎么做呢?其实很简单,鼠标右键点击Component组件

【Unity开发】GameObject

 

 5

GameObjectScript的关系

       这里肯定有人会问——如果现有的这个Component不能满足项目需求或者说我如何才能主动控制场景中的GameObject呢?根据ForwardUnity的现有理解,我们可以通过添加Script来达到这个目的。

              【Unity开发】GameObject

 

 6

先我们需要创建一个自己的Script,如图6所示,(Assets——Create——JavaScript/C#Script/…)创建我们的目标Script,我们所预期的场景中的GameObject所要做的逻辑都是在这个Script中完成的,这么说,可能有人就糊涂了,新创建的Script是如何跟场景中的GameObject关联起来呢?这就涉及到Unity的操作(或许就是Unity被广泛开发人员肯定的一个重要原因吧,场景中的对象与脚本的关联,不需要过多的添加代码,而只需要使用鼠标拖拽就可以完成!)

这里,我们将新添加的Script——CubeTest用鼠标左键选中(不松开)直接拖拽至Hierarchy窗口中的Cube_Test(目标GameObject)上,然后松开鼠标就可以了,这样我们就对目标GameObject关联到了一个Script上(是不是那句广告语——“So easy”啊?^_^

                【Unity开发】GameObject

 

 7

在目标GameObjectInspector窗口中查看添加结果,如图8所示——

                           【Unity开发】GameObject

 

 8

这样,我们就可以在新添加的CubeTest Script中控制目标GameObject了。这里我们为了做测试,在CubeTest文件中添加如下代码——

        【Unity开发】GameObject

 

 9

好了,运行起来之后,如我们所预期的,在Console窗口中,我们看到打印了预期log,证明关联是成功的!

         【Unity开发】GameObject


转自: 点击打开链接


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值