2016-8-7 Unity学习笔记四(常用方法)续

来源:互联网 发布:plc三维动画仿真软件 编辑:程序博客网 时间:2024/04/29 17:57

一下内容学习自极客学院

SendMessag

SendMessag() 消息的推送
在工程内任意地方使用,用于向某些引用传递消息,直接执行某写函数。(= =)
BroadcastMessage() 向子物体消息的推送
意思是GameObject中的所有子物体执行括号中方法
使用方法:
GameObject.Find(“something”).BroadcastMessage(“fun”,value1,SendMessageOption.DontRequireReceiver);
最后的那个Send…指的是,即使我们所指定的对象没有fun函数,也会进行下去(不会报错);如果没有该参数,则当我们执行了不存在的方法时,报错。

Invoke()延迟执行程序

Invoke()延迟执行程序
使用方法:Invoke(“function”,2f);
刚才的使用方法的意思为 在2秒之后执行 function方法,其中function为方法名称,第二个参数为float类型(Unity好多float,,,)
InvokeRepeating()重复并延迟执行程序
使用方法:InvokeRepeating(“function”,2f,1f);其中第二个参数为两次function执行之间的间隔
#同时,我们需要使用 CancelInvoke()方法,对所有或者指定的Repeating进行取消,使用方法:CancelInvoke(“function”);

Coroutine()协同执行程序

目测会经常用的方法
*在主程序运行时,同时开启另一段逻辑处理,来协同当前程序的执行
*开启协同程序就是类似于开启一个线程
*但是 协成 并不是 线程

官网Coroutine实例

using UnityEngine;using System.Collections;public class ExampleClass : MonoBehaviour{    void Start(){        print("Starting " + Time.time);        StartCoroutine(WaitAndPrint(2.0f));        print("Before WaitAndPrint Finishes " + Time.time);    }    IEnumerator WaitAndPrint(float waitTime){        yield return new WaitForSeconds(waitTime);        print("WaitAndPrint " + Time.time);    }}

其中的 Enumerator 和 yield return… 是作为Coroutine方法所必须的
yield 内容如果为 yield return null; 则代表挂起一帧,在下一帧重新被调用

/**********调用方法*********/public void OnMouseDown(){    StartCoroutine(testMove());}/**********方法体***********/Enumerator testMove(){    for(int i = 0;i < 100;i++){        this.transform.Translate(.1f,0f,0f);        yield return null;    }}

这样,我们每一帧都会向上 translate .1f 的距离,直到 100

#我们可以使用 Coroutine 来执行相对吃内存并且只需要很少调用的程序,比如地图的加载等等吃系统配置的操作。如果不使用 Coroutine 的话,我们则需要将当前操作完成之后可以进行下一步。
0 0
原创粉丝点击