找回密码
 立即注册
首页 业界区 业界 U3D动作游戏开发读书笔记--2.1一些通用的预备知识 ...

U3D动作游戏开发读书笔记--2.1一些通用的预备知识

县挫伪 4 天前
2.1 一些通用的预备知识:

2.1.1 使用协程分解复杂逻辑

试想一下如何实现一个简单的NPC人物行为,例如是村民。村民饿了会去吃饭,困倦了会去睡觉。上来上一个状态机?其实用不着这么复杂,可以使用协程来实现。
[code]namespace LearnBook.Chapter2{    ///     /// 村民    /// 使用协程模拟村民的行为 不用使用复杂的状态机    /// 适合一些简单的 硬编码实现的 NPC行为    ///     public class Villager : MonoBehaviour    {        #region 状态常量                const float FATIGUE_DEFAULT_VALUE = 5F;                const float SATIATION_DEFAULT_VALUE = 5F;        private const float FATIGUE_MIN_VALUE = 0.2F;                const float SATIATION_MIN_VALUE = 0.2F;                #endregion        private float mSatiation; //饱食度        private float mFatigue; //疲劳度        private Coroutine mActionCoroutine; //NPC的行为协程        private void OnEnable()        {            //初始化状态:既不累也不            mSatiation = SATIATION_DEFAULT_VALUE;            mFatigue = FATIGUE_DEFAULT_VALUE;                        //启动行为协程 模拟村民的行为            StartCoroutine(Tick());        }        ///         /// 模拟村民的行为的协程        ///         ///         IEnumerator Tick()        {            while (true)            {                //更新饱食度和疲劳度 随着时间推移下降                mSatiation = Mathf.Max(0,mSatiation - Time.deltaTime);                mFatigue = Mathf.Max(0,mFatigue - Time.deltaTime);                                if (mSatiation

相关推荐

您需要登录后才可以回帖 登录 | 立即注册