zoukankan      html  css  js  c++  java
  • Unity3D游戏开发最佳实践20技巧(三)


    【文本】

    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,而不是VampireDarkPauseButton,而不是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   ...


  • 相关阅读:
    Open vSwitch使用案例扩展实验
    hdoj-1233-还是畅通工程
    DS实验题 Floyd最短路径 & Prim最小生成树
    DS实验题 Missile
    Mininet实验 基于Mininet实现BGP路径挟持攻击实验
    Gift for GS5
    Bellman-Ford算法
    pox目录中的交换机mac地址学习模块 l2_multi源码
    Mininet实验 使用l2_multi模块寻找最短路径实验
    Ubuntu安装Flash
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/6726222.html
Copyright © 2011-2022 走看看