升级获取技能,三选1
rougelike游戏常见的模式
增加属性都简单,主要是如何暂停游戏内容
主要有两个地方控制
1.Update
提取出一个PauseObject继承MonoBehaviour
定义一个虚方法,OnUpdate
Update里面进行判断,如果没暂停才调用OnUpdate
暂停通过GameManager里面的一个静态bool变量控制
2.协程
定义一个CoroutineManager统一管理所有协程
对于每个协程封装一层CoroutineTask,进行管理
里面有一个IEnumerator Run()
开启就是开启这个Run协程
在里面可以控制暂停,结束以及完成时回调
public IEnumerator Run()
{
var e = coroutine;
while (running)
{
if (GameManager.Pause || this.pause)
{
yield return null;
}
else
{
if (e != null && e.MoveNext())
{
yield return e.Current;
}
else
{
running = false;
}
if (OnFinish != null)
{
OnFinish(stopped);
}
}
}
CoroutineTaskManager.Instance.RecycleCoroutineTask(this);
}
这样只需设置
GameManager.Pause = true;
就可以实现对一切实体静止的操作了,类似Timescale的效果
网友评论