只谈 Unity中 yield return/ StartCoroutine 的使用
写在开始:本篇文章不讨论yield return 语句与StartCoroutine 语句的比较深层的东西,网上相应的文章不胜枚举,大家还请自己去看。
这里我只想说一下以上两个语句在实际中的使用,以及需要注意的情况。
Start
C#中yield return 语句的用处很广,它的主要作用是在合适的时间给你一定的返回结果,之后当再次进入该方法时,在上一个中断的地方进行,在这里我给出一个有限状态机的例子进行说明:
private IEnumerator FSM(){
while(_alive){
switch(_state){
case State.Init:
Init ();
break;
case State.Setup:
Setup ();
break;
case State.Search:
Search ();
break;
case State.Attack:
Attack ();
break;
}
yield return null;
}
}
public void OnTriggerEnter(Collider other){
if (other.CompareTag("Player")){
target = other.transform;
_alive = true;
FSM ();
}
}
public void OnTriggerExit(Collider other){
if (other.CompareTag("Player")){
target = null;
_alive = false;