CG游麟网官方站
查看: 8943|回复: 17

[教程集] 转 Unity3D中GameObject 详细介绍

[复制链接]

21

主题

27

帖子

1745

积分

名动江湖

Rank: 6Rank: 6

麒麟币
1717
任务币
0
威望
0
贡献
9
主题
21
在线时间
4 小时
发表于 2016-1-14 11:25:08 | 显示全部楼层 |阅读模式
通讯,动态创建,Prefab,销毁

通过Hierarchy面板下的Create菜单可以手动地创建一个GameObject,它可以是一个相机,一个灯光,或者一个简单的模型,当我们要在程序里面动态地创建一个相机的时候,可以new一个GameObject,然后把Camera组件Add给它就可以了,创建灯光,GUI等也类似,但要创建简单模型的时候,我发现并没有类似Cube,Sphere这样的组件可供添加,后面知道,通过GameObject这个类的一个静态方法可以达到这个目的

static GameObject CreatePrimitive(PrimitiveType type);

可以根据PrimitiveType创建五种类型的基础模型

PrimitiveType.Plane,PrimitiveType.Cube,PrimitiveType.Sphere,PrimitiveType.Capsule,PrimitiveType.Cylinder

Unity3D提供一种被称为Prefab的预置对象,它是以文件的形式保存在硬盘上的一个GameObject,它里面可能包含了各种设置,组件,还有一些脚本。Prefab允许我们在不同的Scene,甚至Project中使用同一个对象,例如我实现了一个子弹,通过打包成Prefab,我可以在另外一个游戏里面直接使用它。

当一个Prefab对象被修改的时候,它的所有实例都会相应地被修改

在代码里面动态地实例化一个Prefab对象

public GameObject obj;
obj = Instantiate( obj  );

要先创建一个公有变量,然后把这个Prefab拖到这个变量上,然后才可以用它来实例化对象(我感到一种蛋蛋的忧伤,能不拖吗)

通过Resources这个类的静态方法可以将Prefab对象动态加载进来,创建GameObject

GameObject之间的通讯,在游戏中,我们往往需要知道其他对象的一些信息,所以我们经常需要动态地查询另外一个GameObject

1. 查找父节点 transform.parent

2. 查找子节点 transform.Find("name");  transform.Find("Arm/Hand/Finger"); 没有找到会返回null,名字如果包含"/"字符将像路径一样穿越层次

3. 查找场景中的其他GameObject
GameObject.Find 从Scene下开始查找,根据GameObject的名字进行查找,允许使用"/"穿越层次查找,
GameObject.FindWithTag根据Tag查找一个GameObject,
GameObject.FindGameObjectsWithTag 根据Tag批量查找GameObject

GameObject的name和Tag可以直接设置,但Tag需要在标签管理器先定义一个Tag,这个Tag才可用,你不能将一个未定义的Tag赋给GameObject的Tag变量

最后还有一种搓搓的通讯方法,通过Message来调用其他GameObject,默认是不中意短信群发,也可以将一个Object穿进去,然后调它的方法

methodName为方法名,value为方法的参数,options表示是否必须有对象接收该消息(如果是,且没有对象接受,u3d报错)

//调用本级别所有的GameObject上所有脚本的methodName方法
void SendMessage(string methodName, object value = null, SendMessageOptions options = SendMessageOptions.RequireReceiver);

//朝本级别和上级父节点发送调用命令
void SendMessageUpwards(...)

//目标是本级别和全部子节点...
void BroadcastMessage(...)

调用Object的Destroy方法可以销毁一个GameObject,组件,或者资源。这是一个静态方法,函数的原型为 static void Destroy(Object obj, float t = 0.0F );

可以通过将this传入,销毁自己。

GameObject的成员变量很多
楼主热帖
回复

使用道具 举报

3

主题

1365

帖子

1395

积分

名动江湖

Rank: 6Rank: 6

麒麟币
6
任务币
85
威望
0
贡献
0
主题
3
在线时间
40 小时
发表于 2016-1-14 22:47:12 | 显示全部楼层
感谢楼主分享
回复 支持 反对

使用道具 举报

0

主题

1万

帖子

3万

积分

垂名青史

Rank: 16Rank: 16Rank: 16Rank: 16

麒麟币
21764
任务币
359
威望
2
贡献
131
主题
0
在线时间
754 小时

忠实会员

发表于 2016-1-15 00:43:54 | 显示全部楼层
感謝分享這麼好的資源!
回复 支持 反对

使用道具 举报

4

主题

981

帖子

1万

积分

名扬四海

Rank: 11Rank: 11Rank: 11Rank: 11

麒麟币
9135
任务币
360
威望
0
贡献
0
主题
4
在线时间
294 小时

最佳新人忠实会员

发表于 2016-1-15 10:24:42 | 显示全部楼层
感谢楼主分享
回复 支持 反对

使用道具 举报

5

主题

3975

帖子

5955

积分

誉满一方

Rank: 8Rank: 8

麒麟币
1992
任务币
235
威望
0
贡献
0
主题
5
在线时间
321 小时

忠实会员最佳新人

发表于 2016-1-15 12:51:49 | 显示全部楼层

感謝分享這麼好的資源!
回复 支持 反对

使用道具 举报

556

主题

8005

帖子

3万

积分

垂名青史

Rank: 16Rank: 16Rank: 16Rank: 16

麒麟币
23221
任务币
200
威望
0
贡献
0
主题
556
在线时间
133 小时
发表于 2016-3-1 16:35:46 | 显示全部楼层
好东西,谢谢分享
回复 支持 反对

使用道具 举报

5

主题

1864

帖子

6134

积分

四方传颂

Rank: 9Rank: 9Rank: 9

麒麟币
4257
任务币
200
威望
0
贡献
0
主题
5
在线时间
146 小时

最佳新人忠实会员

发表于 2016-10-10 22:43:11 | 显示全部楼层
路过,,,看一下
回复 支持 反对

使用道具 举报

0

主题

208

帖子

7875

积分

四方传颂

Rank: 9Rank: 9Rank: 9

麒麟币
7669
任务币
0
威望
0
贡献
0
主题
0
在线时间
228 小时
发表于 2017-2-23 20:34:59 | 显示全部楼层
资源想要,寡人的麒麟币要隐隐发作了!
回复 支持 反对

使用道具 举报

0

主题

35

帖子

37

积分

初入江湖

Rank: 1

麒麟币
2
任务币
0
威望
0
贡献
0
主题
0
在线时间
2 小时
发表于 2017-3-30 16:32:38 | 显示全部楼层
不错好好学习一下
回复 支持 反对

使用道具 举报

0

主题

6

帖子

39

积分

初入江湖

Rank: 1

麒麟币
33
任务币
0
威望
0
贡献
0
主题
0
在线时间
0 小时
发表于 2017-6-7 09:31:29 | 显示全部楼层
楼主好人, 一生平安
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
客服QQ:
47413829
新QQ群:
418757022
在线时间:周一至周五
9:00-22:00 Email:
47413829@qq.com
举报:网盘资源失效
在线客服
快速回复 返回顶部 返回列表