首页 > 技术文章 > Unity3D常用 API 之实例化与销毁

jyiqing 2017-06-17 00:25 原文

1.实例化游戏物体

1.1.游戏中的案例介绍

在很多 MMORPG 类的游戏中都有类似于“金钱副本”的副本关卡。在这类副

本中通常都是限定一个时间,在这个时间内玩家可以尽情的破坏,然后收集金钱。

分析游戏截图讲解场景元素:[见图]

 

①场景中所有的坛子,模型都是一样的,坛子是预制体。

②坛子是从“天上”掉下来的,所以坛子模型身上有刚体组件。

③如果玩家在一段时间内没有打碎坛子,这些坛子会消失。

1.2.案例场景制作

①创建地面模型;(Plane)

②创建“坛子”模型,并制作成预制体;(Cube)

1.3.实例化生成 1 个坛子

实例化生成物体:

GameObject.Instantiate(Object, Vector3, Quaternion);

参数说明:

Object:用于实例化的预制体;

Vector3:实例化后生成的物体所在的位置;

Quaternion[四元数]:实例化后生成的物体的旋转状态;

Quaternion.identity:无旋转;

图解:

这里选择public(公共的)修饰,会在script面板中出现一个Go Prafab的属性,如果是private(私有的)是没有的;

 

 

通过拖拽就可以让goPrafab字段持有了Cube的应用,在代码中就可以访问到它了

运行游戏:在Create上方1M的就被实例化出了一个cube

实例化出来的物体是有clone标志的

 

 

 

1.4.构造随机位置

位置是用 Vector3 类型进行表示的。

X,Y,Z 三个值确定了物体在三维世界中的位置。

Random.Range(min, max):生成随机数。

在 min 和 max 直接随机生成一个随机数。

 

图解:

 

 

 

表示在X轴的9到-9之间、Y轴的10、Z轴的9到-9之间当中的位置其中一个位置生成

 

 

在演示中,可以看到每次运行了3次游戏,每次Cube产生的位置都不同,但高度不变

 

演示:按下键盘的一个键,就在随机位置实例化一个物体。

X轴和Z轴随机,Y轴不随机

 

2.销毁游戏物体

GameObject.Destroy(Object, float);定时销毁某个游戏物体。

参数说明:

Object:要销毁的游戏物体;(自身叫gameObeject)

float:时间,多少秒后销毁;

 

因为销毁动作是物体自身的动作,所以我们将这个新的脚本挂载到要销毁的物体身上

开始后,物体逐渐消失

 

推荐阅读