最近一个项目,大量用到时间中断,也经常出现各种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);加上
输出为:
下面这段代码,就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");
}
}
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");
}
}