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

一下内容学习自极客学院

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
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值