Unity基本概念和操作学习

发表于2017-03-09
评论0 2.7k浏览

一些开发者想要熟练的使用unity做项目开发,就必须要清楚unity里面的一些基本概念,并了解这些功能才能说去操作使用,下面就给大家学习下Unity的基本概念和操作,一起来看看吧。

解释对象与资源的区别与联系

资源(asset)就是可以在我们的项目中使用的文件,包括图像、视频、脚本文件、预制文件等,它们的存在不依赖于Unity。


ProjectWindow中显示Asset

资源通过文件夹的形式来组织,资源会按照文件类型分类放到不同的文件夹。

对象(Object)是Unity创建的实例,你可以在inspector窗口中调整它们的属性。其中游戏对象(GameObject),出现在场景中的所有物体都是GameObject,GameObject按照一定的层次结构组织起来,显示在Hierarchy窗口中。


Hierarchy存放GameObject

对象通过层次结构来组织,通过整体-部分的关系构成层次结构。

Asset与Object的联系:
对象可以通过资源来保存起来,资源可以用来创建对象实例,一个资源可以创建多个对象。


MonoBehaviour

MonoBehaviour是每一个脚本对象的基类,它有一些方法可以覆盖,这些方法会在运行的特定时间被调用,我们通过在这些方法中打印一句话来看看它们的执行顺序如何:


代码.png

运行结果:


启动.png

每一帧.png

结束.png

我们验证了这张图:


MonoBehaviour

GameObject,Transform,Component 三者之间的关系

GameObject是场景中所有实体的基类,Component通过挂载到GameObject来改变它的属性(装饰模式),Transform是一种Component ,通过挂载到GameObject来控制其位置、角度、大小、层次关系。MonoBehaviour(脚本)也是一种Component,它也可以挂载到GameObject上。


GameObject-UML.png

对象的基本操作

要控制对象和对象森林(Hierarchy)的结构,我们要创建Script并将其挂载到对象上,然后在Script中改变GameObject的Component的属性(改变了Component的属性也就改变了GameObject!)。

获取在这个对象上的部件:

void Start () { Rigidbody rb = GetComponent(); // Add a force to the Rigidbody. rb.AddForce(Vector3.up * 10f);}

创建对象:public static GameObject CreatePrimitive(PrimitiveType type);
克隆对象:Object.Instantiate()

public GameObject enemy; void Start() { for (int i = 0; i < 5; i++) { Instantiate(enemy); }}

查找对象:public static GameObject Find(string name);

要获取其他GameObject,也可以通过在脚本中创建一个public变量:

public GameObject prefab;

然后将你要获取的GameObject从Hierarchy窗口(或Project窗口)拖动到Inspector窗口的对应空位,然后你就可以在脚本中使用playerTransform了。

通过标签查找单个对象:public static GameObject FindWithTag(string tag)
通过标签查找多个对象:public static GameObject[] FindGameObjectsWithTag(string tag)
添加子对象:

GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube); cube.name = "a cube"; cube.transform.position=new Vector3(0,Random.Range(0,5),0); cube.transform.parent=this.transform;

遍历对象树:

foreach (Transform child in transform) { DoSomething(child);}

另外也可以通过Transform的方法。

清除所有子对象:

foreach (Transform child in transform) { GameObject.Destroy(child);}

更多的方法见GameObject文档


预设与对象克隆

预设(prefab)是一个对象的快照或模板,可以用于快速生成相同的对象,比如子弹、敌人等等。修改预设以后,通过该预设生成的对象也会发生变化。

预设与克隆的联系与区别:

预设与克隆都能创建出相同的对象。预设创建出的对象与源预设依然有联系,后者的更改会影响到前者。但是克隆出的对象与源对象不再有联系。


组合模式

组合模式允许你将对象组合成树形结构来表现“部分-整体”的层次结构,使得客户以一致的方式处理单个对象以及对象的组合。实现了组合模式以后,我们就可以忽略“部分”的存在了,我们只需要告诉“整体”要做什么,然后“整体”就会让每一个“部分”做好自己的事情。
让我们从组合模式的角度来看待电脑开机。如果说电脑是一个“整体”,那其中的CPU、内存等硬件就是“部分”。当我们想要开机的时候,我们需要告诉CPU、内存要怎么启动起来吗?不用,我们只需要按开机按钮,告诉电脑这个“整体”:我要开机。然后电脑就会让CPU、内存等硬件做自己的事情,最终把电脑启动起来。

我们通过BroadcastMessage来让“整体”发送消息给“部分”:


如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引