Unity3D游戏开发最佳实践20技巧(三)

欢迎来到unity学习unity培训、unity企业培训教育专区,这里有很多U3D资源U3D培训视频U3D教程U3D常见问题U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌。

【文本】

38、如果你有很多的剧情文本,那么把他们放到一个文件里面。

不要把他们放到Inspector的字段中去编辑。这些需要做到不打开Unity,也不用保存Scene就可以方便的修改。

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

有很多种方法来实现这点。例如,定义一个文本Class,为每个字符串定义一个public的字符串字段,并把他们的默认值设为英文。其他的语言定义为子类,然后重新初始化这些字段为相应的语言的值。

另外一种更好的技术(适用于文本很大或者支持的语言数量众多),可以读取几个单独的表单,然后提供一些逻辑,根据所选择的语言来选取正确的字符串。

【测试与调试】

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

这可以显著的加速调试工作。详见这里。

41、实现一个HTML的Log。

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

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

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

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

很多BUG是图形化的,如果你有一个截图,就很容易报告它。一个理想的系统,应该在PlayerPrefes中保存一个计数,并根据这个计数,使得所有成功保存的截屏文件都不被覆盖掉。截屏文件应该保存在工程文件夹之外,这可以防止人们不小心把它提交到版本库中。

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

这可以在汇报位置相关的BUG时明确它发生在世界中的什么位置,这可以让Debug容易一些。

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)。
  • 不要使用缩写:[email protected]应该写成[email protected]。
  • 使用设计文档中的术语:如果文档中称呼一个动画为Die,那么使用[email protected],而不要用[email protected]。
  • 保持细节修饰词在左侧:DarkVampire,而不是VampireDark;PauseButton,而不是ButtonPaused。举例说明,在Inspector中查找PauseButton,比所有按钮都以Button开头方便。(很多人倾向于相反的次序,认为那样名字可以自然的分组。然而,名字不是用来分组的,目录才是。名字是用来在同一类对象中可以快速辨识的。)
  • 为一个序列使用同一个名字,并在这些名字中使用数字。例如PathNode0, PathNode1。永远从0开始,而不是1。
  • 对于不是序列的情况,不要使用数字。例如 Bird0, Bird1, Bird2,本应该是Flamingo, Eagle, Swallow。
  • 为临时对象添加双下划线前缀,例如__Player_Backup。

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

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

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

结构

场景组织、工程目录、脚本目录应该使用相似的模式。

目录结构

[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   ...

更多精彩请点击 http://www.gopedu.com/

时间: 2024-11-08 21:56:49

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

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

欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多U3D资源.U3D培训视频.U3D教程.U3D常见问题.U3D项目源码,我们致力于打造业内unity3d培训.学习第一品牌. 关于这些技巧这些技巧不可能适用于每个项目. 这些是基于我的一些项目经验,项目团队的规模从3人到20人不等: 框架结构的可重用性.清晰程度是有代价的--团队的规模和项目的规模决定你要在这个上面付出多少: 很多技巧是品味的问题(这里所列的所有技巧,可能有同样好的技术替代方案): 一些技巧可能是对传统

Unity3D游戏开发最佳实践20技巧(二)

欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多U3D资源.U3D培训视频.U3D教程.U3D常见问题.U3D项目源码,我们致力于打造业内unity3d培训.学习第一品牌. [扩展和MonoBehaviourBase] 21.扩展一个自己的Mono Behaviour基类,然后自己的所有组件都从它派生 这可以使你方便的实现一些通用函数,例如类型安全的Invoke,或者是一些更复杂的调用(例如random等等). 22.为Invoke, StartCoroutine

[1.30] 保持的力量:接口开发最佳实践

神啊,求你赐给我平静的心,去接受我无法改变的事:赐给我勇气,去做我能改变的事:赐给我智慧,去分辨两者的不同. --平静之祷 1.30.1 论保持的力量 追到一个心仪的女生不难,难于如何保持和培养一份真挚的感情:获得一时的财富也不难,难于如何长久保持收益:创业的公司很容易博得一时媒体的关注以及某次天使的投资,但难于如何排除各种障碍.充分利用各方资源发展成中企业及至上市公司. 同样,提供一时的接口很容易,但当我们需要不断为接口提供升级,以及当我们维护提供一整套接口时,面临的困难和问题会越来越大.所以

微信公众平台开发最佳实践(第2版)

<微信公众平台开发最佳实践 第2版>微信公众平台开发经典之作全新改版,精心挑选最经典的商业项目开发,成千上万人次微信公众平台开发者从中受益 前言 出版说明 自从方倍工作室在博客园推出微信公众平台开发系列教程后,受到广大微信开发人员及爱好者的热情关注,相关文章的日访问量高达2万人次,而<微信公众平台开发入门教程>的阅读量超过50万,博客访问量总计超过500万,成为微信公众平台开发更新最快,传播最广.受众最多.资料最全的博客,很多博文被许多有影响力的网站转载,并被各大搜索引擎收录且排名

Android企业级应用程序开发完整训练:精通Android商业级开发最佳实践的24堂课

从企业级商业实战的角度入手,24小时内通过23个动手实战案例,循序渐进的对Android商业级别的应用程序开发要点各个击破,依托于在多年的Android(6款完整的硬件产品和超过20款应用软件)开发和企业级培训经验(超过150期的次Android的企业内训和公开课),旨在在实务的基础之上帮助你完成任何复杂程序的高质量Android应用程序开发,让Android开发跟上想象的速度.最后,通过ActivityManagerService揭秘Android应用程序一切行为背后的核心根源,让你从此开发应

Unity3D游戏开发 地形系统(四)

http://mahaile.blog.51cto.com/2891586/771167 上一章我们讲解了 如何创建一个简单的游戏世界 这一章我们来 看看unity3d中的地形系统 废话少说 赶紧开始吧,,哈哈   首先创建一个新的场景    点击菜单栏中的 Terrain-> create Terrain 菜单       完成后如 下图       创建地形系统的时候 unity会按默认的 宽高 图像分辨率,纹理分辨率 等创建一个地形  不过不怕 这些我们都可以修改滴    如果需要在gam

web移动开发最佳实践之 css篇

web移动开发最佳实践之 css篇 一.css概述 css即层叠样式表(Cascading Style Sheets),它的作用主要是控制页面元素的样式,包括布局.颜色.字体.字号.空白.边框.属性等等.css的出现使得html的内容和样式分离,极大的提高了工作效率. 目前最新的标准是css3,下面几节将介绍在使用css过程中应遵循的最佳实践方案. 二.使用高效的css选择器 欲创建一个高效的web应用,你要了解浏览器是如何读取你的web页面并呈现出来的.当浏览器读取你的html文档时,它首先对

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

大家好,我是秦元培.我參加了CSDN2014博客之星的评选,欢迎大家为我投票,同一时候希望在新的一年里大家能继续支持我的博客. 大家晚上好.我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.终于到了更新博客的时间.从昨天下午開始,博主開始设计一个跑酷的游戏,到晚上睡觉前这个游戏已经基本完毕. 博主今天早上七点钟就起来了,到早上十点钟终于把整个游戏写完了. 所以,今天的博客的主题就是<Unity3D游戏开发之跑酷游戏项目解说>. 从博主自身来考虑这

Android和PHP开发最佳实践 (第2版)——互动出版网

这篇是计算机类的优质预售推荐>>>><Android和PHP开发最佳实践 (第2版)> 51CTO社区.PHPChina社区强烈推荐!国内第一本同时讲述Android客户端开发和PHP服务端开发的经典著作!市面上第一本把Android应用客户端加服务器开发的完整解决方案分析透彻的书 本书是国内第一本同时讲述Android客户端和PHP服务端开发的经典著作. 本书以一个完整的微博应用项目实例为主线,由浅入深地讲解了Android客户端开发和PHP服务端开发的思路和技巧.从