网站公告 | 全新unity3d 完整学习路线,最强课程配套、服务!详情点击
查看: 42629|回复: 1
收起左侧

[已翻译] 在Unity中构建工具来提升你的开发流程

[复制链接]

[已翻译] 在Unity中构建工具来提升你的开发流程[复制链接]

咔咖 发表于 2018-4-8 13:25:18 [显示全部楼层] |只看大图 回帖奖励 |倒序浏览 |阅读模式 回复:  1 浏览:  42629
译者:陈敬凤(nunu    审校:崔国军(飞扬971
我想我们大家都会认同说Unity的编辑器工具非常伟大并且非常的有用。通过使用Unity的编辑器工具我们可以非常快速的构建产品的原型并且让构建产品原型的过程容易的多,可以非常轻松地添加新的对象和分配变量。这对于我们的工作流程来说是一个非常巨大的进步。问题在于,随着ImmortalRedneck(原作者正在开发的项目)项目变得越来越大,我们开始需要我们自己的工具,而且这些工具我们可以通过Unity编辑器非常快速的开发出来。
我们已经写过文章介绍过该购买那些资源来让我们的开发变得更加直观一点,但是这里面介绍过的资源可能并不符合你的需求。所以为什么不让我们自己来开发一个符合我们需求的工具呢?这不是第一次我们通过构建我们自己的工具来加快我们的工作流程,而且Immortal Redneck并没有什么特殊的地方。所以我们给你展现下我们为我们自己的项目所开发的编辑器工具。
游戏设计工具
Immortal Redneck是一个大型游戏-至少对我们来说是这样的。除了要花费大量的开发时间以外,这个游戏还要求做大量的平衡:这里面设计到枪、敌人和技能,所以我们希望这个任务能够越简单越容易完成越好。




这就是为什么我们要建立这个工具,而且它几乎可以在运行时随意的改变设置。现在我们可以做如下这些事情:
·         设置诸如掉落率(drop rate)和敌人的出生时间(spawn time)等全局参数。
·         统计每一个类的信息(比如生命值(HP)、攻击力(Attack)、防御力(Defense)等等)。
·         统计敌人的信息。在未来,我们希望能够改变他们的全局行为并且改变他们在何时攻击、在何时停下来以及距离多远的情况下他们会开始移动。。。
·         设置武器的伤害、设计距离、扩散率(spread)、弹药以及后坐力(recoil)。。。
·         修改技能树的等级、金钱的比例以及统计改变方面的信息。。。






房间插件
我们希望我们的游戏有大量的房间,所以我们需要能够快速创建房间的能力,并且希望创建的房间质量非常的好。我们为了这些能力编写了一些工具。

我们首先要做的是,创建了一个看上去很像ProGrid的菜单这样我们可以混合一切所需要的东西。我们可以在某个坐标轴非常快速的复制物体因为这是在最初的开发里面花费我们时间最多的地方。此外,这也是团队要做的极端无聊和重复的事情,所以我们把这件事情放到工具里面来做。




还有另外一个工具,它允许我们可以检查某个目录下我们创建的每个资源,并且把我们需要的资源复制到场景中去。它几乎是一个全自动的工具并且工作的非常良好。我们可以在我们正在注视的地点放置资源或者在场景中选择某个东西并用目录中的某个东西代替。如果要替换一整个地板或者墙的话,它工作起来真的非常非常快。





房间场景的属性检视插件
由于优化方面的需求,我们游戏中的每一个房间都是一个场景。即使Unity 5.3在这方面进行了很大的提升,使用场景和使用预制件相比较仍然是一件非常困难的工作。




我们决定采用如下一种工作方式:创建各种各样的场景作为房间并对每个房间采用一个ScriptableObject作为引用。这个ScriptableObject有每个场景的所有数据,但是我们可以使用这个ScriptableObject来加载房间场景、将房间场景加到构建设置(BuildSetting)以及做其他一些功能。

我们一直在Unity的定制检视器进行我们的开发工作,我们拓展了默认的编辑器并添加了更多的选项。我们甚至添加了房间预览功能因为Unity那时候还不支持这个事情,而这是我们在变动场景的时候急于快速知道的。

基于物理规则的渲染的材质



因为我们游戏的每个资源都采用了基于物理规则的渲染的材质(Physically Based Rendering,PBR),所以每个材质都要求三张贴图(反射率贴图、遮罩贴图和法线贴图)。这意味着每次我们往Unity导入资源的时候,我们需要给导入的物体创建一个材质并一次给它赋予三个纹理贴图。
这不是一个非常繁重的过程,但是当你在游戏中给所有的材质添加贴图的时候,这个过程有时候还是非常无聊的。我们编写了一个小工具可以手动选择项目中的三个纹理贴图来自动创建一个材质。它最后成为我们开发中最有用的工具之一。
多摄像机截图

大多数的截图插件只让你使用一个游戏摄像机。因为Immortal Redneck使用了两个游戏摄像机-一个是跟随玩家的,一个是跟随武器的-我们创建了自己的工具来捕获所有我们想要的相机。



一旦我们有了这个插件,我们通过使用覆盖选项来让这个插件变得更加好用,所以我们添加我们自己的Logo并且无需打开Photoshop就可以插入必须的“没有经过透明度混合” 的称号。
每一张你见过的促销截图都是通过多摄像机截图插件捕获的。
合并功能
使用相同材质的纹理可以在Unity中进行合并来提升渲染方面的性能。有各种各样的插件可以实现这个功能,但是我们还是会使用我们自己的工具因为我们的工具似乎表现的更好。
同样的,我们在UI上采用了ProGrid风格并且创建了我们自己的窗口。它看上去很棒并且有很多的选项:创建一组对象并在渲染的时候进行合并、用另外一个对象来剔除一组对象、用另外一个对象和与它们合并以及最后一个选项是把一组对象分开。
物体的随机生成器
为了建造Immortal Redneck的三个金字塔,我们的艺术家创造了不同的岩石块,所以他们不得不手动堆叠这些岩石来组成金字塔的一边。




手工来做这些事情是非常困难的,所以我们编写了一个小工具,用来按着有一点变化的线来摆放石头。这样的话,我们的艺术家可以随意的按照他们的需求来创建尽可能多的线从而可以非常快速的摆放金字塔又不会有任何的重复。随后,他们会手动的对摆放做一些小的调整,但是金字塔可以在一瞬间完成。




Gizmo
Unity有一个非常有趣的功能:它把Gizmo和脚本融合在一起了。Gizmo可以用来在场景中展现图形,所以有些东西就可以很容易的被看出来。




举个例子来说,在如上图所示的房间中,我们用gizmo来展现敌人的出生位置和敌人的AI所感兴趣的点。
红色圆球展现了敌人的avatar所以我们可以看到他们会在哪里出生,红色的方块会在对应的生物行走的时候做同样的移动。
蓝色圆球以及橙色方块的作用和红色圆球类似,蓝色圆球表示的是飞行类敌人的感兴趣的点而地板上的橙色方块表示的是地面行走类敌人感兴趣的点。
一开始使用的时候,这看上去有点拥挤和混乱,但是一旦习惯了这个工具,它确实对于开发有非常大的帮助。
组件剪贴板(Clipboard)




任何人如果使用过Unity估计都会有过这样的体验:你在测试游戏的过程中改变了一些什么,然后你停止了测试,就会发现刚才修改的东西根本就没有保存,刚才的努力全白费了,真想大哭一场。

有时候,你需要在运行的时候改变一个值以便实时看到这个值的变化会如何影响游戏。我们写了一个脚本来生成一个剪贴板这样在结束运行游戏的时候可以对你修改的值进行拷贝粘贴。这个工具非常简单并且易于使用,它节省了我们项目的艺术家大量的时间。
关于作者

我是CremaGames的联合创始人,CremaGames是一个西班牙独立游戏和应用程序工作室。我们制作了类似nstant Buttons的应用和Oh my goat、 Ridiculous Marathon以及Ridiculous Triathlon等游戏。现在我们在开发mmortal Redneck,这是一款FPS类的roguelite游戏以及我们第一款的电脑游戏。


【版权声明】
根据授权文件,我们可以翻译这篇文章。

+1
42623°C
1
  • snakebbf
过: 他们
因分享而快乐,学习以自强!
snakebbf 发表于 2018-4-9 19:10:05 显示全部楼层
这个不错!!!谢谢分享!!
因分享而快乐,学习以自强!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

VR/AR版块|Unity3d|Unreal4|新手报道|小黑屋|站点地图|沪ICP备14023207号-9|【泰斗社区】-专注互联网游戏和应用的开发者平台 ( 浙ICP 备 13006852号-15 )|网站地图

© 2001-2013 Comsenz Inc.  Powered by Discuz! X3.4

1
QQ