UNITY之SendMassage,Corouting

来源:互联网 发布:poi的软件 编辑:程序博客网 时间:2024/06/03 22:44
using UnityEngine;
using System.Collections;

public class SengMsg : MonoBehaviour {
    public GameObject obj;


    // Use this for initialization
    void Start () {

    
//        obj.SendMessage ("DisplayInfo");//不支持重载,没错,但只会找一个函数,重载的函数调用不到
//        obj.SendMessage ("DisplayInfo",2);//即只会调用obj里的DisplayInfo()函数,DisplayInfo(int n)调用不到

        //obj向下广播信息,向子类广播信息
        //obj.BroadcastMessage ("DisplayInfo");
        //obj向上广播信息,向父类广播信息
        obj.SendMessageUpwards ("DisplayInfo");
    }
    
    // Update is called once per frame
    void Update () {
    
    }

}


using UnityEngine;
using System.Collections;

public class Receive : MonoBehaviour {

    // Use this for initialization
    void Start () {
    
    }
    
    // Update is called once per frame
    void Update () {
    
    }

    public void DisplayInfo(){
        print (this.gameObject.name+" : Receive diao yong");
    }
    public void DisplayInfo(int n){
        print ("Receive diao yong n:"+n);
    }
}


using UnityEngine;
using System.Collections;

public class CoroutingTest : MonoBehaviour {

    //协程是指开启一段程序,协同当前程序的执行,不是多线程
    // Use this for initialization
    void Start () {
    
        print ("1");
        //StartCoroutine ("CoroutingDemo1");

        StartCoroutine (CoroutingDemo1());//这种调用方式好一点,当方法含有参数时可以直接在括号里写参数
        print ("5");
    }
    
    // Update is called once per frame
    void Update () {
    
    }
    IEnumerator CoroutingDemo1(){
        print ("2");
        yield return new WaitForSeconds (5f);
        print ("3");
        yield return new WaitForSeconds (2f);
        print ("4");
    }

    void OnDisable(){//当此脚本的enalbe=false时调用此脚本
    
        //topCoroutine ("CoroutingDemo1");//关闭单个开启的协程
        StopAllCoroutines ();//关闭所有的协程
    }
}


using UnityEngine;
using System.Collections;

public class Cotouting : MonoBehaviour {

    public Vector3 targetPosition;
    public float moveSpeed;

    // Use this for initialization
    void Start () {
    
        //StartCoroutine (CountDown("Messgae"));
        //StartCoroutine (SaySomeThings());
        //StartCoroutine (RepeatMessage(5,1f,"nihao"));

        StartCoroutine (MoveToPosition(targetPosition));
    }
    
    // Update is called once per frame
    void Update () {
    
    }


    IEnumerator CountDown(string msg){
        for (float i = 3; i >=0; i-=Time.deltaTime) {
            yield return 0;
        }    
        print (msg);
    }


    IEnumerator SaySomeThings(){
    
        print ("started");
        //yield return StartCoroutine (Wait(1f));
        yield return new WaitForSeconds (1f);
        print ("1s");
        yield return StartCoroutine (Wait(2.5f));
        print ("2.5s");
    }

    IEnumerator Wait(float duration){
        for (float i = 0; i <= duration; i+=Time.deltaTime) {
            yield return 0;
        }
    }


    IEnumerator RepeatMessage(int count ,float frequence,string msg){
        for (int i = 0; i < count; i++) {
            print (msg);
            for (float j = 0; j <=frequence; j+=Time.deltaTime) {
                yield return 0;
            }
        }
    }
        
    IEnumerator MoveToPosition(Vector3 target){
        while(transform.position!=target){
            transform.position = Vector3.MoveTowards (transform.position,target,moveSpeed*Time.deltaTime);

            yield return 0;
        }
    }
}

0 0
原创粉丝点击