关于暂停游戏功能的做法,
网上的教程以及Unity官方发布的Demo都是通过把Time.timeScale设成0来实现的,
然而这会导致一些蛋疼的问题,
因为Time.timeScale是全局变量,
改成0后UI动画,粒子特效啥的就全都扑街了,
虽然可以通过改Update函数来打补丁,
但是对于我这种有代码洁癖的人来说,
这实在是一个既蛋疼又难看的搞法,
另外,把Time.timeScale设成0以后,
只是把FixedUpdate停下来了,
但Update还是会调用,
这样可能出现一些诡异的逻辑问题,
然后还要浪费CPU去跑没用的代码太不环保了,
真心搞不懂Unity的程序猿为啥要把这个很简单的问题搞得这么复杂,
这个功能随便用脚趾头都能想出很多简单又好用的办法,
例如加个功能可以在对象上打个标记或者设个状态,
然后在引擎Update的时候不调用该对象及其子对象的Update相关函数就可以了,
可惜这玩意没源码,
不然花两分钟时间就改好了,
目前想到的办法是弄一个全局暂停变量,
在所有脚本的Update相关函数里判断这个变量是否为true,
如果为true就直接return,
虽然写起来稍微麻烦点,
但是代码比较明确,
省CPU也不容易出错。