【文本】

38、假设你有非常多的剧情文本。那么把他们放到一个文件中面。

不要把他们放到Inspector的字段中去编辑。

这些须要做到不打开Unity,也不用保存Scene就能够方便的改动。

39、假设你计划实现本地化。那么把你的字符串分离到一个统一的位置。

有非常多种方法来实现这点。比如。定义一个文本Class。为每一个字符串定义一个public的字符串字段,并把他们的默认值设为英文。

其它的语言定义为子类,然后又一次初始化这些字段为对应的语言的值。

第二种更好的技术(适用于文本非常大或者支持的语言数量众多),能够读取几个单独的表单,然后提供一些逻辑,依据所选择的语言来选取正确的字符串。





                                                                                                                                                                       

【測试与调试】

40、实现一个图形化的Log用来调试物理、动画和AI。

这能够显著的加速调试工作。

详见这里。

41、实现一个HTML的Log。

在非常多情况下。日志是非常实用的。拥有一个便于分析的Log(颜色编码、有多个视图、记录屏幕截图等)能够使基于Log的调试变动愉悦。详见这里。

42、实现一个你自己的帧速率计算器。

没有人知道Unity的FPS计算器在做什么。可是肯定不是计算帧速率。实现一个你自己的。让数字符合直觉并可视化。

43、实现一个截屏的快捷键。

非常多BUG是图形化的,假设你有一个截图,就非常easy报告它。一个理想的系统,应该在PlayerPrefes中保存一个计数,并依据这个计数。使得全部成功保存的截屏文件都不被覆盖掉。截屏文件应该保存在project目录之外,这能够防止人们不小心把它提交到版本号库中。

44、实现一个打印玩家坐标的快捷键。

这能够在汇报位置相关的BUG时明白它发生在世界中的什么位置,这能够让Debugeasy一些。

45、实现一些Debug选项,用来方便測试。

一些样例:

  • 解锁全部道具;
  • 关闭全部敌人;
  • 关闭GUI;
  • 让玩家无敌;
  • 关闭全部游戏逻辑;

46、为每个足够小的团队,创建一个适合他们的Debug选项的Prefab。

设置一个用户标识文件,单不要提交到版本号库,在游戏执行时读取它。以下是原因:

  • 团队的成员不会由于意外的提交了自己的Debug设置而影响到其它人。
  • 改动Debug设置不须要改动场景。

47、维护一个包括全部游戏元素的场景。

比如。一个场景,包含全部的敌人,全部能够交互的对象等等。这样能够不用玩非常久,而进行全面的功能測试。

48、定义一些Debug快捷键常量。并把他们保存在统一的地方。

Debug键通常(方便起见)在一个地方来处理,就像其它的游戏输入一样。为了避免快捷键冲突,在一个中心位置定义全部常量。

一种替代方案是。在一个地方处理全部按键输入,无论他是否是Debug键。

(负面作用是,这个类可能须要引用很多其它的其它对象)





【文档】

49、为你的设置建立文档。

代码应该拥有最多的文档,可是一些代码之外的东西也必须建立文档。让设计师们通过代码去看假设进行设置是浪费时间。把设置写入文档。可以提高效率(假设文档的版本号可以及时更新的话)。

用文档记录以下这些:

  • Layer的使用(碰撞、检測、射线检測——本质上说。什么东西应该在哪个Layer里);
  • Tag的使用;
  • GUI的depth层级(说什么应该显示在什么之上);
  • 惯用的处理方式;
  • Prefab结构;
  • 动画Layer。

【命名规则和文件夹结构】

50、遵从一个命名规范和文件夹结构。并建立文档

命名和文件夹结构的一致性,能够方便查找。并明白指出什么东西在哪里。

你非常有可能须要创建自己的命名规则和文件夹结构。以下的样例仅供參考。

普遍的命名规则

  • 名字应该代表它是什么。比如鸟就应该叫做Bird。
  • 选择能够发音、方便记忆的名字。假设你在制作一个玛雅文化相关的游戏。不要把关卡命名为QuetzalcoatisReturn。
  • 保持唯一性。假设你选择了一个名字。就坚持用它。

  • 使用Pascal风格的大写和小写。比如ComplicatedVerySpecificObject。

    不要使用空格。下划线。或者连字符,除了一个例外(详见为同一事物的不同方面命名一节)。
  • 不要使用版本号数字,或者标示他们进度的名词(WIP、final)。
  • 不要使用缩写:DVamp@W应该写成DarkVampire@Walk。
  • 使用设计文档中的术语:假设文档中称呼一个动画为Die,那么使用DarkVampire@Die,而不要用DarkVampire@Death。
  • 保持细节修饰词在左側:DarkVampire,而不是VampireDark;PauseButton,而不是ButtonPaused。举例说明,在Inspector中查找PauseButton,比全部button都以Button开头方便。

    (非常多人倾向于相反的次序,觉得那样名字能够自然的分组。然而,名字不是用来分组的,文件夹才是。

    名字是用来在同一类对象中能够高速辨识的。)

  • 为一个序列使用同一个名字,并在这些名字中使用数字。

    比如PathNode0, PathNode1。永远从0開始,而不是1。

  • 对于不是序列的情况,不要使用数字。比如 Bird0, Bird1, Bird2。本应该是Flamingo, Eagle, Swallow。
  • 为暂时对象加入双下划线前缀。比如__Player_Backup。

为同一事物的不同方面命名

在核心名称后面加入下划线,后面的部分代表哪个方面。

比如

  • GUI中的button状态:EnterButton_Active、EnterButton_Inactive
  • 贴图: DarkVampire_Diffuse, DarkVampire_Normalmap
  • 天空盒:JungleSky_Top, JungleSky_North
  • LOD分组:DarkVampire_LOD0, DarkVampire_LOD1

结构

场景组织、project文件夹、脚本文件夹应该使用相似的模式。

文件夹结构

[AppleScript] 
1
MaterialsGUIEffectsMeshes  Actors     DarkVampire     LightVampire     ...  Structures     Buildings     ...  Props     Plants     ...  ...PluginsPrefabs  Actors  Items  ...Resources  Actors  Items  ...Scenes  GUI  Levels  TestScenesScriptsTexturesGUIEffects...

场景结构

[size=11.818181991577148px]CamerasDynamic ObjectsGameplay   Actors   Items   ...GUI   HUD   PauseMenu   ...ManagementLightsWorld   Ground   Props   Structure   ...

[size=11.818181991577148px]脚本文件夹结构

[size=11.818181991577148px]ThirdParty   ...MyGenericScripts   Debug   Extensions   Framework   Graphics  IO   Math   ...MyGameScripts   Debug   Gameplay      Actors      Items      ...   Framework   Graphics   GUI   ...

Unity3D游戏开发最佳实践20技巧(三)的更多相关文章

  1. Unity3D游戏开发最佳实践20技巧(一)

    关于这些技巧这些技巧不可能适用于每一个项目. 这些是基于我的一些项目经验.项目团队的规模从3人到20人不等. 框架结构的可重用性.清晰程度是有代价的--团队的规模和项目的规模决定你要在这个上面付出多少 ...

  2. Unity3D游戏开发最佳实践20技能(两)

    [扩展和MonoBehaviourBase] 21.扩展一个自己的Mono Behaviour基类.然后自己的全部组件都从它派生 这能够使你方便的实现一些通用函数.比如类型安全的Invoke.或者是一 ...

  3. Android和PHP开发最佳实践

    Android和PHP开发最佳实践 <Android和PHP开发最佳实践>基本信息作者: 黄隽实丛书名: 移动应用开发技术丛书出版社:机械工业出版社ISBN:9787111410508上架 ...

  4. [Unity3D]Unity3D游戏开发《反对》说到游戏(上)——目标跟踪

    朋友,大家好.我是秦培,欢迎关注我的博客.我的博客地址blog.csdn.net/qinyuanpei. 首先博主要自我反省,过了这么久才来更新博客,这段时间主要是在忙着写期末的作业,所以博主基本上没 ...

  5. [Unity3D]Unity3D游戏开发之跑酷游戏项目解说

    大家好,我是秦元培.我參加了CSDN2014博客之星的评选,欢迎大家为我投票,同一时候希望在新的一年里大家能继续支持我的博客. 大家晚上好.我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.c ...

  6. iOS应用开发最佳实践

    <iOS应用开发最佳实践> 基本信息 作者: 王浩    出版社:电子工业出版社 ISBN:9787121207679 上架时间:2013-7-22 出版日期:2013 年8月 开本:16 ...

  7. Web前端开发最佳实践(3):前端代码和资源的压缩与合并

    一般在网站发布时,会压缩前端HTML.CSS.JavaScript代码及用到的资源文件(主要是图片文件),目的是加快文件在网络中的传输,让网页更快的展现.当然,CDN分发.缓存等方式也是加快代码或资源 ...

  8. MongoDB开发最佳实践

    MongoDB开发最佳实践 连接到MongoDB · 关于驱动程序:总是选择与所用之MongoDB相兼容的驱动程序.这可以很容易地从驱动兼容对照表中查到: · 如果使用第三方框架(如Spring Da ...

  9. Unity3D游戏开发初探—2.初步了解3D模型基础

    一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...

随机推荐

  1. odoo基础数据加载

    odoo 基础数据加载 这里介绍的odoo基础数据加载分两种方式,一种是演示数据加载,一种是默认数据加载,下面就是详细介绍 首先,当然是创建一个date文件夹 项目目录,右键自定义一个文件夹 XML数 ...

  2. 1012 The Best Rank (25)(25 point(s))

    problem To evaluate the performance of our first year CS majored students, we consider their grades ...

  3. 概率论中常见分布总结以及python的scipy库使用:两点分布、二项分布、几何分布、泊松分布、均匀分布、指数分布、正态分布

    概率分布有两种类型:离散(discrete)概率分布和连续(continuous)概率分布. 离散概率分布也称为概率质量函数(probability mass function).离散概率分布的例子有 ...

  4. hdu 5308 (2015多校第二场第9题)脑洞模拟题,无语

    题目链接:http://acm.hdu.edu.cn/listproblem.php?vol=44 题意:给你n个n,如果能在n-1次运算之后(加减乘除)结果为24的输出n-1次运算的过程,如果不能输 ...

  5. android显示TextView文字的倒影效果

    今天记录一下TextView的倒影效果,显示一串文字,然后在文字的下方显示出它的倒影,先上效果图: 最重要的就是View中getDrawingCache()方法,该方法可以获取cache中的图像,然后 ...

  6. mysql关联查询和联合查询

    一.内联方式 1.传统关联查询 "select * from students,transcript where students.sid=transcript.sid and transc ...

  7. CentOS6安装redmine

    Author: JinDate: 20140827System: CentOS release 6.5 (Final) 参考:http://www.redmine.org/projects/redmi ...

  8. 使用Chrome快速实现数据的抓取(一)——概述

    对于一些简单的网页,我们可以非常容易的通过Develop Tool来获取其请求报文规律,并仿照其构建报文来获取页面信息.但是,随着网页越来越复杂,许多页面是由js动态渲染生成的.要获取这类信息,则需要 ...

  9. 使用结构struct作为Dictionary<TKey,TValue>的键

    我们经常用简单数据类型,比如int作为泛型Dictionary<TKey,TValue>的key,但有时候我们希望自定义数据类型作为Dictionary<TKey,TValue> ...

  10. C# 中的动态创建技术

    [转载]原文出处  http://blog.csdn.net/baiyun789/article/details/6156694 第一部分 WinForm控件在窗体中动态居中创建.删除控件及对其赋值 ...