常用 API 之实例化与销毁
1.案例场景制作
①创建地面模型;
②创建需要实例化的模型,并制作成预制体;
实例化生成 1 个方块
Resources.Load(Path);//动态加载某个在Resources文件夹下的物品
GameObject.Instantiate(Object, Vector3, Quaternion);
参数说明:
Object:用于实例化的预制体;
Vector3:实例化后生成的物体所在的位置;
Quaternion[四元数]:实例化后生成的物体的旋转状态;
Quaternion.identity:无旋转;
3.构造随机位置
位置是用 Vector3 类型进行表示的。
X,Y,Z 三个值确定了物体在三维世界中的位置。
Random.Range(min, max):生成随机数。
在 min 和 max 直接随机生成一个随机数。
演示:按下键盘的一个键,就在随机位置实例化一个物体。
4.销毁游戏物体
GameObject.Destroy(Object, float);定时销毁某个游戏物体。
参数说明:
Object:要销毁的游戏物体;
float:时间,多少秒后销毁;
常用 API 之 Invoke 函数调用
1.Invoke 函数代码
Invoke(string,float):多少秒后执行某个函数[只会调用一次]。
参数说明:
String:要执行的函数的名称;
Float:秒数,倒计时的时间;
InvokeRepeating(string,float,float):多少秒[第二个参数]后执行某
个函数,并且以后每隔多少秒[第三个参数]都会执行该函数一次[重复调用 N 次]。
参数说明:
String:要执行的函数的名称;
Float:秒数,准备时间,预热时间;
Float:秒数,重复调用的间隔时间;
CancelInvoke():取消这个脚本中所有的 Invoke 调用。
2.Invoke 函数的类
MonoBehaviour 类。
我们现在阶段写的脚本,都是默认继承“MonoBehaviour”类的,我们自己写
的脚本类,都是这个“MonoBehaviour”类的子类,所以我们可以直接通过
写方法名的形式,就可以调用父类中的方法。
当然如果你写的类不继承“MonoBehaviour”类的话也是可以的,但是脚本是没办法挂载到任何物体上,只能通过代码去调用
SendMessage 消息发送
1.SendMessage 函数
gameObject.SendMessage(string):通知这个游戏物体身上的脚本文件中的“指定方法”执行。
参数说明:
String:方法名,要执行的方法的名称;
脚本调用该方法进行发送消息,可以使自身所有脚本进行接收,其接收的类型为Object
示例:
首先我么创建一个SendMessageTest.cs脚本内容如下void Start () {
SendMessage(“GetMessage”, this.gameObject, SendMessageOptions.RequireReceiver);
}
我们再创建一个脚本GetMessageTest.cs脚本 内容如下
void GetMessage(GameObject _g)
{
Debug.Log(this.gameObject.name+" Get: "+_g.name);
}
常用 API 之协同程序
1.协同程序简介
转存失败
重新上传
取消
1.什么是协同程序
协同程序,简称“协程”。在脚本运行过程中,需要额外的执行一些其他的代码,
这个时候就可以将“其他的代码”以协程的形式来运行。
类似于开启了一个线程,但是协程不是线程。
2.协同程序的使用前提
只有在继承了“MonoBehaviour”这个类的子类中才能使用相关的协程方法。
2.协同程序语法格式
1.定义协同程序
协同程序就是一个“代码片段”,往往我们需要将这个代码片段封装成一个方法,
或者称之为函数。
IEnumerator Task3()
{
yield return new WaitForSeconds (2);
Debug.Log (“任务 3”);
}
参数说明:
IEnumerator:协同程序的返回值类型;
yield return:协同程序返回 xxxxx;
new WaitForSeconds (秒数):实例化一个对象,等待多少秒后继续执行。
这个 Task3()的作用就是等待两秒后,继续执行任务 3.
2.开启协同程序
StartCoroutine(“协同程序方法名”);
这个 StartCoroutine 有三种重载形式,目前先只介绍这一种。
3.停止协同程序
StopCoroutine(“协同程序方法名”);
这个 StopCoroutine 也有三种重载形式,目前先只介绍这一种。
协程是一种用户态的轻量级线程,协程的调度完全由用户控制。从技术的角度来说,“协程就是你可以暂停执行的函数”。
协程与线程进程的主要区别:
线程进程都是同步机制,而协程则是异步
协程能保留上一次调用时的状态,每次过程重入时,就相当于进入上一次调用的状态。