Unity3D开发技巧
来源:互联网 发布:java开源加密工具 编辑:程序博客网 时间:2024/05/23 01:19
转载自:http://blog.csdn.net/candycat1992/article/details/24884667
写在前面
和备忘录篇一样,这篇文章旨在总结Unity开发中的一些设计技巧,当然这里只是我通过所见所闻总结的东西,如果有不对之处欢迎指出。
技巧1:把全局常量放到一个单独的脚本中
很多时候我们需要一些常量,例如是否输出Log,正式服务器和测试服务器的IP等等,我们可以把这些常量写在同一个脚本里,并设置属性为public static,然后在其他脚本里直接访问该变量即可。当代码量越来越大时,你会发现这样会减少很多查找常量的时间。而且,这样更改时也非常方便,例如当需要发布新版本时,你只要把该脚本中的log开关设为false就可以了。又或者公司更改了服务器地址,一个简单字符串的更改就可以了。
例如,我们在名为Const.cs的脚本中添加如下代码:
其中IsWriteMsg表明是否需要将文本写到本地以供查看,IsDebugBuild表明是不是Debug模式(一般用于控制是否输出Log)。
技巧2:把全局函数放到一个单独的脚本中
和上一条类似,有时我们需要一些经常使用的、且无关对象的函数,例如解析系统某些特定含义的字符串、得到角色在场景中的位置等。我们可以把这些函数写在同一个脚本里,并设置函数属性为public static即可。
技巧3:保存字符串和JSON信息
我们经常需要和字符串打交道,例如得到服务器传来的消息等等,而且想要保存它们,复制粘贴又太麻烦了,作为一个很懒的程序员,怎么能一直重复做一件事情呢!
例如,我们在名为GlobalFunc.cs(即为技巧2中提到的全局函数脚本)的脚本中,添加如下代码(关于Json部分,需要LitJson插件,可参见这篇博文)(注意:其中有用到技巧1中的Const.cs脚本中的变量):
技巧4:自定义弹出框
弹出框,类似于Windows编程中常见的各种MessageBox,它们有固定的界面格式,程序员一般只要指定style、title和内容即可。
详见这篇博文。
技巧5:暂停游戏
关于Time.timeScale来暂停游戏的细节,请见《Unity备忘录篇》。
如果使用Time.timeScale = 0来暂停游戏,那么下面两种方法可能可以帮助你:
- 把所有的移动都放到FixedUpdate中(不太可能)
- Update中,所有的移动都使用Time.deltaTime控制
技巧6:使用Vector3.Lerp移动物体
我们可以使用Lerp函数实现在两个点——start和to,进行插值,其中t是插值比率。
当t<=0时,Lerp函数返回start;当t>=1时,Lerp函数返回to。因此,如果你想要在某个时间内把物体从start移动到to位置,你可以通过不断增加t(通常每帧增加的值为Time.deltaTime/NumberOfSecondsToComplete)来实现。像下面这样:还有一种情况就是,你想要从物体的当前位置开始进行一个平滑的移动。这时,我们需要把start替换成物体本身的位置,transform.position。
Shader中避免If语句
可以使用lerp和step函数来代替使用If语句。例如:
参考:
http://gamedev.stackexchange.com/questions/45398/avoid-if-statements-in-directx-10-shaders
http://gamedev.stackexchange.com/questions/59476/using-two-shaders-instead-of-one-with-if-statements
- Unity3D开发技巧
- Unity3D开发小技巧
- Unity3D游戏开发技巧Camera实现效果
- Unity3D技巧
- Unity3D技巧
- Unity3D游戏开发最佳实践20技巧(一)
- Unity3D游戏开发最佳实践20技巧(二)
- Unity3D游戏开发最佳实践20技巧(三)
- Unity3D开发技巧:如何避开unity编辑器的那些坑
- Unity3d 技巧(2)-移动开发ADB 的简单使用
- Unity3D开发
- Unity3D小技巧
- Unity3D使用小技巧
- Unity3D模型优化技巧
- Unity3D渲染优化技巧
- Unity3d优化技巧
- Unity3D使用小技巧
- Unity3d 杂七杂八小技巧
- notification几种点击事件
- 图片列表换行错位,图片无法左对齐怎么办
- 第3章 一切基于pom
- 推荐系统小结
- WEBSERVICE各家之说
- Unity3D开发技巧
- 基于opencv的相机之马赛克功能实现(九)
- 不要自称是程序员,我十多年的 IT 职场总结 http://blog.jobbole.com/94148/
- java基础内存分析
- 5.5 输入组装阶段
- Myeclipse注册方法
- Linux常用命令大全
- Hanoi Tower
- 【源码分享】经典指标和K线图系列之MACD