中断测试

              最近一个项目,大量用到时间中断,也经常出现各种bug,为了查找原因,特意做了几个小test

    

using UnityEngine;
using System.Collections;

public class test : MonoBehaviour {

	// Use this for initialization
	IEnumerator  Start () {
	
		InvokeRepeating("test1",0f,1f);
		//yield return new WaitForSeconds(1f);
		CancelInvoke("test1");
		yield return null;
	}
	
	// Update is called once per frame
	void Update () {
	
	}
	
	void test1()
	{
		Debug.Log(Time.time);
		Debug.Log("haha");
	}
}
什么都不输出

如果把name="code" class="csharp">yield return new WaitForSeconds(1f);加上

输出为:中断测试_第1张图片


下面这段代码,就canel不掉,真他妈的坑爹啊

using UnityEngine;
using System.Collections;


public class test : MonoBehaviour {


	// Use this for initialization
	void  Start () {
	
		StartCoroutine("createstart");
	}
	
	// Update is called once per frame
	void Update () {
	
	}
	
	IEnumerator createstart()
	{
		int i=0;
		while(true)
		{
		InvokeRepeating("test1",0f,1f);
		yield return new WaitForSeconds(5f);
		CancelInvoke("test1");
			print("ok i ge");
		yield return null;
			
		}
	}
	
	void test1()
	{
		Debug.Log(Time.time);
		Debug.Log("haha");
	}
}

中断测试_第2张图片


using UnityEngine;
using System.Collections;

public class test : MonoBehaviour {
	
	public bool isok=true;
	// Use this for initialization
	void  Start () {
	
		StartCoroutine("createstart");
	}
	
	// Update is called once per frame
	void Update () {
	
	}
	
	IEnumerator createstart()
	{
		int i=0;
		while(isok)
		{
		InvokeRepeating("test1",0f,1f);
		yield return new WaitForSeconds(5f);
	    isok=false;
		CancelInvoke("test1");
			print("ok i ge");
		yield return null;
			
		}
	}
	
	void test1()
	{
		Debug.Log(Time.time);
		Debug.Log("haha");
	}
}


你可能感兴趣的:(中断测试)