unity C#协同程序

协同程序和多线程有相似之处,但是又不是一个东西

协同程序是可以吧一个函数(routine) 分成几段执行,yield 关键字来等待协同程序的返回,

多线程在多核处理器的环境下能真正并行运行,协同程序任意时刻只有一个代码片段在运行

多线程要考虑线程同步,而协同程序不会,因为任意时刻只有一个协同程序的代码片段在运行

协同函数返回值必须是IEnumerator yield return 来返回 

注意:4.3.1 最大允许协程数量为10000000个

 

1.用于定时器

启动1秒后debug输出
	void Start () {
        StartCoroutine(func());  //立即返回
        //StartCoroutine("func");//立即返回
        
	}
	
	// Update is called once per frame
	void Update () {
	
	}

    IEnumerator func()
    {

        yield return new WaitForSeconds(1);//暂停当前函数片段,让出给其他片段执行,等待WaitForXXXXXX 返回

        Debug.Log("1111111");


    }

2.加载进度显示

   public Text txt;
    // Use this for initialization
    bool is_done;
    int current;
    int total;

    void Start()
    {
        is_done = false;
        current = 0;
        total = 100;
        txt = GameObject.Find("Text").GetComponent<Text>();

        StartCoroutine(loding_sync());
     //   StartCoroutine(    ()=>IEnumerator{} );

    }

    // Update is called once per frame
    void Update()
    {

    }

    IEnumerator loding_sync()
    {

        txt.text = "start to loaing";
        yield return new WaitForSeconds(1.0f);

        for (; current <= total; ++current)
        {
            yield return new WaitForEndOfFrame();
            txt.text = current.ToString() + "%";
            dosomethingelse();
        }

        txt.text = "Done";
       

    }

    void dosomethingelse()
    {
       
    }

 

转载于:https://my.oschina.net/kkkkkkkkkkkkk/blog/647228

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值