首页 > Unity3D频道 > 【Unity杂文】 > Unity3D研究院之程序工程和美术工程
2014
04-29

Unity3D研究院之程序工程和美术工程

         做项目的时候一般会在SVN上保存两个工程,一个是客户端工程、一个是美术工程。我先说说我是怎么样做的, 最后我再说我为什么要这样做。

1.保证资源不出问题

          如果给了美术或者策划上传资源的权限,那么很有可能他们上传了错误的资源,或者它们不小心上传了错误的资源,那么程序一更新就报错了。。有些错误往往找到最后都是资源的问题,所以我们要尽量避免出现资源错误的情况。我举个典型的例子,比如每个模型都有一个动画叫”Attack” ,那么美术写错了某一个模型的动画,一般游戏少说也有100多个模型,资源一起提交以后鬼知道那个模型的动画写错了。我现在的做法是,在美术SVN工程中,做了一个按钮专门用来检查资源,美术当把模型、动画、贴图制作完成以后,先运行一下查错工具,如果没有错误然后在上传SVN。最好不要让美术手动做Prefab,只让他们做最原始的模型、动画、贴图、根据项目的需求写工具来生成Prefab,总之就是要保证美术上传的资源一定要正确的。

         客户端工程找一个合适的时间来同步美术工程,两个工程的目录结构要完全一样。同步工程的操作让策划来完成就可以了,因为策划不仅要同步美术工程,他还需要同步数据表格。以我对策划的了解他们写错表格的可能性非常大, 举个典型的例子,比如掉落表中有一个装备的掉落,它指向装备表中的主键是100的这件装备,如果装备表中恰巧策划忘配 主键为100的这个装备。那么程序获得到这件掉落的时候必然就报错了。。。。程序里面很多问题找到最后都是因为策划表格写错了字段引起的。。所以作为程序我们一样要给策划写检查错误的工具。

          写到这里我要先声明一下,我并没有对美术和策划另眼相看。只是我觉得很多细节的东西,人脑操作肯定没有电脑操作安全,就拿表格来说吧如果是我我肯定也会写错的。既然能用工具来代替人脑来检查这是多么好的一件事情啊。 至于检查工具怎么写,这得根据你的项目而定,总之我们做程序就是要用工具来避免美术和策划犯错误。

 2.常用检查工具

同步场景

首先如果你的场景同步过来了很多Scene文件,需要在BuildSetting里面手动的Add Current进去,这样做很麻烦,不要手动,我们要自动嘿嘿。

 Unity3D研究院之程序工程和美术工程 - 雨松MOMO程序研究院 - 1

 创建一个文件夹命名Editor,无论它的目录在哪里都可以主要叫Editor就行,把如下代码放到Editor文件夹下。

Easy.cs

Unity3D研究院之程序工程和美术工程 - 雨松MOMO程序研究院 - 2

然后点击Tool/同步所有场景到SceneSetting文件 ,程序会自动将场景中的所有.unity 的Scene文件同步在BuildSetting中。

同步资源

Unity提供了导出的功能,一般是选择一个需要导出的场景或者Prefab,然后选择Export Package.. 。我个人觉得这个东西非常难用,因为如果你的Prefab上面绑定有脚本,当你导出的时候Unity会自动关联上所有脚本,不管你用不用。。太恐怖了。。。。。 一大堆导出的文件。

Unity3D研究院之程序工程和美术工程 - 雨松MOMO程序研究院 - 3

也不是不可以用,有一个比较讨巧的方法。首先选择Prefab,然后右键Select Dependencies,这样就可以自动关联Prefab所有的文件。

Unity3D研究院之程序工程和美术工程 - 雨松MOMO程序研究院 - 4

关联好以后,在右键选择ExportPackage… 如下图所示,记住一定不要勾选Include dependencies 。这样因为我的Prefab只绑定了一个脚本,所以图中这里只会关联绑定的哪个脚本,别的脚步就不会被关联的。。

Unity3D研究院之程序工程和美术工程 - 雨松MOMO程序研究院 - 5

但是我觉得最好的最好还是自己写一个工具,嘿嘿。

选择一个或多个Prefab 或者Scene文件,然后右键选择new Export Assets ,创建一个UnityPackage的文件夹, 这样导出的.unitypackage 就会放在里面啦。

Unity3D研究院之程序工程和美术工程 - 雨松MOMO程序研究院 - 6

导出出以后,然后双击装在客户端工程里面就可以了。

回到文章的开篇,为什么要用两个工程。如果用一个工程美术和策划必须很小心很小心,比如美术要做一个很庞大的场景,可能要做一周左右,如果在一个工程下,美术没做完是不应该上传的(可能程序就会出错),但是如果不上传SVN资源又不小心弄丢了几天的工作不就白费了么。而且一旦给了美术程序的权限,那么Unity里面那么多设置的选项,美术一不小心改了,有可能就是一个bug。

 如果使用两个工程,美术可以每天都上传保证自己的工作,等整个场景都做完以后,使用检查错误的工具检查发现没有错误,此时在同步在客户端的工程中。 这样可以找一个合适的同步资源的时间点,既可以保证程序的正确,也可以保证资源的正确。

如果两个工程的目录,命名都严格按照规范,那么此法是必然可行的。

雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!

--

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。

  1. 你好,我想问一下,美术跟策划是能不能拿到程序工程的?还有,有时候美术工程需要代码来调技能特效之类的(比如技能编辑器),即使能拿到代码,他们也要在两个工程之前导来导去的,这样感觉很麻烦的样子,楼主你们是怎么解决的?

  2. 有一个问题,如果我要在导出的时候删除某个组件再打包要怎么破?我本来是想拷贝选择的预置到新的目录,修改,然后再export 可是导出来的unity文件只有单个预置文件,没有depend的相关文件,查看下发现在ExportPackage执行之后meta文件都变了,还有什么方法么?

  3. 您好,请问我在mac上制作的人物预设,在mac上人物动作特效运行正常,但是把工程拷贝到windows下 有些特效就不显示了。 但是在windows下重新制作预设的话,是可以正常播放特效的。这个是什么原因照成的? 怎么解决呢? 还有就是如果非得重新制作预设,有没有批量复制粘贴预设上的组件呢,因为重新做预设,上面绑定的组件实在太多,一个个复制粘贴太麻烦了。 Unity3D研究院之程序工程和美术工程 - 雨松MOMO程序研究院 - 1 ,求回复

  4. HI, 楼主你好, 请问你所说的美术工程,是不包含程序脚本代码,仅用于美术场景、预设等编辑用吗

  5. 楼主你好,看了觉得很不错,我是一个新手,有一些地方不明白,我写好的工具的脚本了,怎么增加到编辑器呢?直接运行写好的脚本?还是把这个脚本放在一个指定的目录下?如UnityEditorData?求指教,谢谢。

      • 哈哈哈哈,我能理解的。数据问题往往都比较头疼,我会有一种“不是我程序造成的问题,但是一定要我来帮你定位并指出来你就不能再仔细一点吗”的郁闷感。顶一个 Unity3D研究院之程序工程和美术工程 - 雨松MOMO程序研究院 - 1