初试Unity 3D——理解U3D的组件和脚本

哈哈,昨晚弄清楚了U3D的组件到底是怎么个机制,今天中午就通过写博客来梳理一遍吧!

1、首先,一个游戏之中会有很多的游戏场景(Scene),游戏场景中有很多的游戏物体(GameObject),包括摄像机、灯光、立方体等。这就构成了一个游戏的主体(当然还有脚本,待会再说)。其实,我们所说的的物体其实就是一个类,对应的是GameObject类,创建一个游戏物体也即是“new”了一个gameObject,只不过这个步骤由引擎来完成的,不需要开发人员来完成。

2、理解了游戏物体,我们在来谈一谈他的好基友游戏组件。其实这么说不太恰当,因为游戏物体和组件的关系并不是同级的,可以简单的这么说,游戏组件构成了游戏物体,而且不同的物体拥有不同的组件,但是所有的物体都有的组件就是Trasform。选中游戏物体可以在属性面板看到当前物体所拥有的组件,当然我们也可以给游戏物体添加组件。你也许会问,那么组件又是什么东西啊?组件也是类!!!学过面向对象编程语言的人都知道,我们可以在一个类(Object)中声明其他类(Test)类型的应用,Test test,在这里,Object就是游戏物体类,而Test就是一个组件,这个操作其实就是给object添加了一个组件(属性),所以我们就可以在属性面板上通过滑动来更改物体的属性了。

3、脚本也是组件,不过他是比较特殊的,因为在这个脚本里面可以做很多事情,比如获取当前挂载的游戏物体,获取其他游戏物体,获取游戏物体的组件,控制组件属性。下面举例子(小白纯手写,没有参照,代码如果错了不要喷哈)

比如:有物体a_Object,b_Object,脚本a_Script,脚本b_Script,分别挂在在物体a_Object,b_Object上。

在a_Script中:
获取a_Object物体:
this,gameObject;
获取a_Object物体组件:
gameObject.GetCompoment<>Transform.Translate();
这句话的意思就是通过一个游戏物体获取他的组件对象,然后用其组件对象来调用组件里面的方法,使游戏物体发生移动
获取b_Object物体:
GameObject b=GameObject.Find(“b_Object”);
获取b_Object物体的组件:
Transform b_transform=b.GetComponent<>Transform.Translate();

当然也可以使用变换属性的方法来移动物体:
gameObject.transform.position=new Vector3(x,y,z);

记性不好,代码就不准了,其实还有很多获取游戏对象和游戏组件的方法,到时候我再整理出来。

你可能感兴趣的:(Unity,3D)