协程
协同程序,即将主程程序运行时同时开启另一段逻辑处理来协同当前程序的执行。换句话说,开启协同程序就是开启一个线程。
使用StartCoroutine(string methodName)可以开启一个线程。
Yield语句是一种特殊类型的Return(返回)语句,它可以确保函数在下一次被执行时,不是从头开始,而是从Yield语句处开始。
协程其实就是一个IEnumerator(迭代器)。迭代器方法运行到 yield return 语句时,会返回一个表达式并保留当前在代码中的位置。 当下次调用迭代器函数时执行从该位置重新启动。
void Start ()
{
StartCoroutine(“Print”);//调用协程Print
}
IEnumerator Print ()//定义一个协程 名字是Print
{
yield return new WaitForSeconds(3f);//三秒后运行
print("one");
yield return new WaitForSeconds(2f);//两秒后运行
print("one one");
yield return new WaitForSeconds(1f);//一秒后运行
print("one one one");
}
消息推送
为了方便Unity物体之间的通信,Unity推出了SendMessge方法,脚本调用SendMessge方法可以进行发送消息,可以使自身所有脚本或者父物体、子物体身上的所有脚本进行接收,其接收的类型为Object。
1、概述
Unity提供的消息推送机制可以非常方便我们的脚本开发,它实现的是一种伪监听者模式,利用的是反射机制。
2、常用函数
1、SendMessage
2、SendMessageUpwards //给父类推送消息
3、BroadcastMessage //给子类推送消息
常用写法
SendMessage("方法名","发送的信息", SendMessageOptions.RequireReceiver);
SendMessageOptions.RequireReceiver 的意思是这个消息一定要有人接收
还可以改成
SendMessageOptions.DontRequireReceIver 这个意思是可以不被接收