2.1.1. 使用协程分解复杂逻辑
- 协程处理异步任务:当遇到一些需要异步处理的程序需求时,可以使用协程来实现
- 使用协程的优点:简单,易于实现
- 实例:使用协程代替有限状态机 (基于原书的代码做了些许修改以及增加了注释)
//一个表示村民的类
public class Villager : MonoBehaviour
{
public float maxSatiation = 10f; //最大饱食度
public float maxFatigue = 10f; //最大困倦值
const float minSatiation = 0.2f; //最小饱食度
const float minFatigue = 0.2f; //最小困倦值
private float satiation; //当前饱食度
private float fatigue; //当前困倦值
Coroutine currentCoroutine; //当前的状态(协程)
//OnEnable在脚本被激活时立即执行
void OnEnable()
{
satiation = maxSatiation; //初始化饱食度,设为最大值
fatigue = maxFatigue; //初始化困倦值,设为最大值
StartCoroutine(Tick()); //开始“游戏循环”的协程
<