【Unity】使用Time.timeScale暂停游戏的时候的一些问题
2015-11-06 02:08
1456 查看
使用Time.timeScale暂停游戏的时候的一些问题
Unity版本:5.2(win7 64位测试)
Unity中游戏暂停一般使用Time.timeScale = 0 来实现。Time.timeScale = 0 即将游戏运行的时间速度置为0,所以游戏中一切东西都看上去不动了(FixedUpdate根据时间来执行,所以不会执行,但是Update和LateUpdate是继续执行的,要想暂停Update和LateUpdate可以设置MonoBehaviour.enable = false)。现在的需求是暂停游戏的时候,角色正在释放的效果是要继续的,这些效果包括代码实现的效果和动画实现的效果。来讲讲我遇到的坑
代码部分
DoTween忽略timeScale:很高兴地用上了DoTween,我们可以设置Tweener.SetUpdate(true)来忽略timeScale,所以大部分问题就这么欢快地解决了,在所有DoTween后面加上SetUpdate(true)。DoTween对UI褪色的bug:但是当用DoTween对UI进行褪色处理时,遇到了问题:所有的UI都褪色了!当然这个问题我在上一篇博客中已经讲到了,这里给出替代方案:CrossFadeAlpha这个函数的第三个参数是bool isIgnoreTimeScale,将第三个参数设置为true就行了。
WaitForSeconds:为了在游戏暂停的时候延迟调用函数,使用了协程,StartCoroutine(某函数),携程中调用的函数使用了WaitForSeconds,一开始以为是协程的问题,后来一番查阅,知道了是WaitForSeconds的问题,它应该是计的timescale影响的时间,所以游戏暂停的时候不会执行,所以需要根据实际时间手动去实现:
[code]IEnumerator HideLabel(GameObject labelPerfect, float waitTime, bool ignoreTimeScale = false) { if (ignoreTimeScale) { float start = Time.realtimeSinceStartup; while (Time.realtimeSinceStartup < start + waitTime) { yield return null; } } else yield return new WaitForSeconds(waitTime); float destroyTime = 0.3f; labelPerfect.GetComponent<Text>().CrossFadeAlpha(0, destroyTime, true); Destroy(labelPerfect, destroyTime); }
动画和例子效果部分
先推荐雨松momo的文章Unity3D研究院之Time.timeScale、游戏暂停(七十四)因为暂时只用到了Animator来实现动画效果,所以这里只讲我遇到的Animator的忽略timeScale的方法,其他的可以参考雨松momo的文章
Animator忽略timeScale:网上介绍说是使用
Animator.updateMode = AnimatorUpdateMode.UnscaledTime; // 指定该Animator更新模式为不受scale影响我使用了这段代码,并且游戏运行时面板中的Animator的UpdateMode属性也确实变成了UnscaledTime,但是动画还是暂停播放了,表示很无奈,这应该是这个版本Unity的bug吧。但是直接在面板中修改Animator的UpdateMode为UnscaledTime,动画顺利地在暂停状态播放了。
相关文章推荐
- 【Unity】 DoTween对UI进行DoFade操作存在问题
- Unity游戏开发使用Assetbundle加载场景的实战
- Unity游戏开发使用Assetbundle加载场景的原理
- unity3d-地图制作之暗光
- Unity3d通用工具类之定时触发器
- Unity3d通用工具类之定时触发器
- unity3D内的常用输入对象
- unity手游之聊天SDK集成与使用一
- Unity3D学习笔记
- 用unity surface shader 重新渲染dota2 模型
- Unity 角色释放技能后使周围物体具有爆炸效果
- unity调用别的脚本里面的方法
- Unity3D 学习 创建简单的按钮、相应事件
- unity/unity3d编译成android apk包瘦身方法
- 【Unity】MonoBehavior事件函数的执行顺序(监听调用顺序)
- Unity 3D 正交相机(Orthographic)
- Unity3D中Quaternion.Euler方法解析
- 浅析游戏引擎的资源管理机制 扒一扒Unity3D中隐藏在背后的资源管理
- 【VR】Leap Motion 官网文档(二) Unity插件概述
- Unity3D工程版本管理方案