- 可以实现将一段程序延迟执行或者将其各个部分分布在一个时间段内连续执行
- 协程的定义:1)本地数据在后续调用中始终保持,2)控制离开时挂起,重新进入时继续执行。
- 开启协程:
2.public Coroutine StartCoroutine(string methodName);
3.public Coroutine StartCoroutine(string methodName, [DefaultValue("null")] object value);
- 暂停协程:
4.public void StopAllCoroutines();
5.public void StopCoroutine(string methodName);
6.public void StopCoroutine(IEnumerator routine);
7.public void StopCoroutine(Coroutine routine);
- public void StopCoroutine(IEnumerator routine); 参数不能直接是方法,对应的StartCoroutine()参数应该是IEnumerator类型的对象,比如:直接StopCoroutine(PutInfo());是不能暂停协程的。
- 要想暂停启动的协程,必须注意搭配:字符串与字符串搭配(启动协程与暂停协程的参数都为字符串)、IEnumerator与IEnumerator搭配(启动协程与暂停协程的参数都为iEnumerator)、StopCoroutine的参数是StartCoroutine的返回值。
IEnumerator PutInfo()
{
float second = 0;
print(second + " | " + Time.realtimeSinceStartup);
while (true)
{
yield return new WaitForSeconds(1);
second++;
print(second + " | " + Time.realtimeSinceStartup);
}
}
IEnumerator PutInfo(int i)
{
while (true)
{
yield return new WaitForSeconds(1);
print(++i);
}
}
---------------------------------处理不带参数------------------------------------
-------------------------------1与5不能搭配使用---------------------------
-------------------------------1与6能搭配使用------------------------------
private IEnumerator Ienum_Arg;
private IEnumerator Ienum_NoArg;
void Start()
{
Ienum_Arg = PutInfo(0);
Ienum_NoArg = PutInfo();
}
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
StartCoroutine(Ienum_NoArg);
}
if (Input.GetMouseButtonDown(1))
{
StopCoroutine(Ienum_NoArg);
}
}
-------------------------------1与7能搭配使用------------------------------
private Coroutine coroutine;
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
coroutine = StartCoroutine(PutInfo());
}
if (Input.GetMouseButtonDown(1))
{
StopCoroutine(coroutine);
}
}
-------------------------------2与5能搭配使用------------------------------
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
StartCoroutine("PutInfo");
}
if (Input.GetMouseButtonDown(1))
{
StopCoroutine("PutInfo");
}
}
-------------------------------2与6不能搭配使用------------------------------
-------------------------------2与7能搭配使用--------------------------------
private void Update()
{
---------------------------------处理带参数------------------------------------
private void Update()
{