Unity开发中总结的一些小技巧
来源:互联网 发布:linux 查看进程cpu 编辑:程序博客网 时间:2024/05/16 18:22
搞Unity3D手机游戏开发快2年了,工作中为了提高效率,攒了一些小技巧,在这里分享一下。
1.改变游戏运行速度
在调动画,战斗,特效之类的时候特别有用,加速运行或者减速运行使调试更方便。
void Update() { TestCase(); ControlSpeed(); //if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl))//按下Ctrl键才好使,这个看自己的习惯来决定是否需要 if (UnityEditor.EditorWindow.mouseOverWindow && UnityEditor.EditorWindow.mouseOverWindow.titleContent.text.Equals("Game"))//鼠标在Game视图里 ControlZoomIn(); } void ControlSpeed() { if (Input.GetKeyDown(KeyCode.F1)) Time.timeScale = 1f; else if (Input.GetKeyDown(KeyCode.F2)) Time.timeScale = 2f; else if (Input.GetKeyDown(KeyCode.F3)) Time.timeScale = 3f; else if (Input.GetKeyDown(KeyCode.F4)) Time.timeScale = 4f; else if (Input.GetKeyDown(KeyCode.F5)) Time.timeScale = 0.2f; else if (Input.GetKeyDown(KeyCode.F6)) Time.timeScale = 0.1f; else if (Input.GetKeyDown(KeyCode.F7)) Time.timeScale = 0.05f; else if (Input.GetKeyDown(KeyCode.F10)) Time.timeScale = 0f; else if (Input.GetKeyDown(KeyCode.F11)) EditorApplication.isPaused = true; }
原理很简单,就是运行的时候改变Time.timeScale实现加速和减速,timeScale改变会影响所有跟时间有关系的模块的运行速度。
我这里是在Update里监视按键,当然你也可以使用其他方式来控制,我觉得按键更方便。
最后两个比较特别,其中F10是把Time.timeScale设置为0,这时候我们的项目还是在跑的,只是和Unity的Time有关的都会因为Time不变而不变(动画,粒子特效之类的),此时相当于游戏暂停,还可以接受键盘事件,按F1恢复正常。F11 则是调用了编辑器的暂停,和鼠标点击Unity编辑器中的暂停效果一样,此时项目被挂起,Update也不执行了,所以要想恢复,得鼠标去编辑器里再次点击暂停按钮。
有时候就是想在运行到特定状态的时候暂停在那,用F11比鼠标去点击更精确方便。
也可以通过扩展菜单栏来实现快捷键控制暂停和播放
/// <summary> /// F12键控制编辑器暂停和播放 /// </summary> [MenuItem("Edit/PlayOrPause _F12",false, -100)] static void PlayOrPause() { EditorApplication.isPaused = !EditorApplication.isPaused; }
知识点总结:
这里的Time是UnityEngine中的Time,Time.timeScale可以理解为时间的缩放比例,为0的时候时间(Time.time的值)就静止不变了,0到1之间是减速,为1的时候正常,大于1的时候时间加速,比如Time.timeScale = 2的话,那么Time.time的增长速度也会变成2倍速度。如果你想取到游戏的实际时间,那么使用Time.timeSinceLevelLoad就可以,前提是必须在Awake()方法以后再取,如果在 Awake()方法里面取Time.realtimeSinceStartup会取出一个错误的值,在Start方法里面取的话就正常了
timeScale不会影响Update和LateUpdate的执行速度,只会影响FixedUpdate的速度,为0的时候FixedUpdate不再执行。
EditorApplication.isPaused = true;这个是Unity编辑器暂停,项目中的代码都会被暂停执行
2.鼠标滚轮调节摄像机视角大小
void ControlZoomIn() { float minFov = 15f; float maxFov = 90f; float sensitivity = 10f; if (Camera.main) { float fov = Camera.main.fieldOfView; fov -= Input.GetAxis("Mouse ScrollWheel") * sensitivity; fov = Mathf.Clamp(fov, minFov, maxFov); Camera.main.fieldOfView = fov; } }
0 0
- Unity开发中总结的一些小技巧
- 在Unity游戏开发中使用暂停的小技巧
- Android中一些开发的小技巧总结(持续更新)
- unity AR开发中遇到的一些错误总结
- 项目中一些js小的技巧总结
- Yii2使用过程中一些小技巧的总结
- DataGrid开发中应注意的一些小技巧
- iOS 开发中会用到的一些小技巧
- Android 开发中应该知道的一些小技巧
- iOS开发中总结的小技巧(持续更新中)
- MeeGo开发中一些小技巧
- iPhone开发中一些使用小技巧
- Android开发中一些小技巧
- iOS开发中一些小技巧
- 开发的一些小总结
- 在开发中总结的一点小技巧
- 关于Ember的一些小技巧总结
- 开发过程中 遇到的一些小问题 总结一下
- eclipse导入tomcat run as 没有server
- 今年暑假不AC
- PAT_乙级1031
- 203Remove Linked List Elements
- zoj3497 Mistwald (矩阵快速幂+图论)
- Unity开发中总结的一些小技巧
- 好用的截图方法
- 1.JVM运行时数据区
- c#之new关键字
- hdoj 2544 最短路
- 异或(Exclusive-OR,Wuhan 2009,LA 4487)
- 常用meta整理,页面技术,SEO优化
- zoj1093 dp入门
- MySQL多实例管理