从混乱到有序,或“在Unity中创建项目结构,而不仅仅是...”

创建新项目时,它是如此干净,易于理解,没有多余的垃圾……它是空的。 开发时间越长,垃圾,模糊的文件夹,文件就越多,有时其他项目的预制件可以到达那里,并且整个组织都飞往Tartar。

事实证明,该组织从来没有来过,该项目已有3年历史了,为时已晚,将其整理好为时已晚,工作起来不方便,总的来说...

欢迎来到混乱中,您在这里是因为:

  • 从来没有想过为什么需要Unity中的项目结构
  • 您的项目有一个永远的烂摊子,而您想摆脱它
  • 寻找新的组织方式
  • 失去希望在他们的项目中整理事物的希望

迟早您会做出决定,这将最适合您,我只能帮助您进行搜索并提供您的选择。 我们将看一些示例,分析并提出最合适的解决方案。 我们还将讨论结构,层次结构和专有名称,以及排序如何帮助加快处理速度。



欢迎来到猫。

感谢所有阅读我以前的资料的人。 是他下面的评论促使我写这篇文章。 内容丰富且实用,浪漫的介绍但实用的内容。 今天,我们将讨论相当明显的事情,如果有任何要添加的内容,请随时编写并提供您自己的选项。
要点。
我们为什么需要结构? -时间。 只要我们的组织对我们来说是清晰且方便的,我们将在调试,添加新功能,文件和清理方面节省大量时间。 正确的文件名,顺序,标签和其他小技巧可以节省时间。
该网络有足够的类似材料和示例,但是对“为什么如此”的解释很少。 我将描述我自己使用的解决方案以及它们如何为我特别方便。 我认为我不会带来新的东西,但是正确的组织是任何项目开始的开始。

“怎么做?”


以环境的对撞机为例。 我们有什么物体和飞机?

  • 性别
  • 墙壁
  • 障碍物(箱子,桶,石头等)
  • 天花板

在场景的层次结构中,我们可以将它们全部放在一个游戏对象中 ,但是搜索起来很不方便。

因此,我们将为地板,墙壁,天花板和障碍物的对撞机创建单独的游戏对象

例如,游戏的关卡



如果我们有10个以上的孩子,那么我建议您编写一个标签,这样可以简化搜索。 再者,对撞机,如果我们谈论的是2D,则将使用边,多边形,框,圆,并且每个对撞机都可以是平面或障碍物对撞机。 可以将其称为“ coll_edge_N”“ coll_e_N”,因为壁碰撞器具有父Wall对象(而后者又具有Colliders父对象),因此会产生问题,是否要编写“ coll_wall_edge_N”平面的标签,以简化搜索,当对象数量很大时,您可以节省很多时间。

我们得到类似的东西。





在Unity中整理文件夹

该项目也有相当明确的规则。

即:

  • 应该清楚哪里在
  • 很清楚在哪里添加新文件和源
  • 适应性和舒适的结构
  • 结构不太复杂也不压碎

当然,您可以在不考虑组织的情况下随处扔东西。

像这样



您可以使用清晰的结构来做一些更有条理的事情。

像这样



现在让我们看看需要什么,不需要什么。

将项目分为内部资产外部资产非常方便,这是一个加号。
外部资产中 ,我们拥有所有第三方资产,仅此而已。
有一个单独的“ 场景”文件夹,其中包含所有场景。
脚本文件夹也是单独的,更加方便。
对我们来说最有趣的文件夹是内部资产
关于我们游戏可见部分的所有内容都位于此处。



那里需要什么文件夹?

  • 所有预制件的预制件主文件夹
  • 贴图/精灵更方便,取决于2D或3D项目
  • 这里的材料材料,一切都清楚了
  • 着色器类似,很少有问题
  • 动画制作
  • 视觉效果
  • 这里的声音是文件夹本身的简单组织,将声音分为BGM,Impact FX等。

作为VFX艺术家和2D / 3D动画艺术家,我将更详细地介绍这些特定文件夹的组织。

对于单元动画,我们需要制作动画控制器动画剪辑 ,其中有多个动画剪辑,因此将它们放置在文件夹中更加方便。 另外,您还需要一个用于设备本身的文件夹。

它看起来像这样。


很方便
现在关于VFX

在带有vfx的文件夹中,您需要文件夹纹理材料和可选的预制件 。 对于VFX艺术家来说,在他们的文件夹中工作而不是使整个项目混乱,而是在他的花园中保持秩序更为方便。 效果纹理始终是纹理。 用于效果的材质具有从加性Alpha混合的不同设置有时一个纹理会应用于多种材质,如果纹理文件夹在附近,则搜索会更容易。 如果您正在编写着色器,则从VFX文件夹中提取纹理会更方便;将完成的着色器的材质放入VFX也会更加方便和合乎逻辑
为什么需要垃圾箱文件夹?

通常,您需要删除某些内容,而不是可以执行的操作,并且一切都会顺利进行,常常会丢失某些内容,如果您不是该项目的首席程序员,那么您可以删除它。 还需要测试功能/想法,而不是测试它会扎根并且是通常所需要的事实。 这就是垃圾文件夹的用途,所有测试,需要删除的所有内容,或您不想随当前提交发送的所有内容,最好放在此处并为gita注册忽略。

在Unity中组织层次结构

关于对撞机的例子更高一些。 这个规则服从一切。 在我们的项目中,我们应用了这样的解决方案。



我们刚刚添加了“ ---章节名称---”,这是一个仅包含名称的空对象。 这似乎是无用且多余的,但有时会简化对舞台上层次结构的搜索和理解。 这种简单的解决方案使您可以多次加速视觉搜索。 例如,我们有一个对手对象,我们可以针对每种类型的敌人使它们复杂化并使其成为多个子对象,而对于老板则使其分离,并为每个敌人进行标记。 然后,我们可以使对手飞起来成为一个母亲对象,指定符号^ ,strong $和老板指定为 。 对于对撞机,此解决方案不是很方便,但是对于对手及其在层次结构中的视觉隔离来说,这很好。

以脊柱为例的组织

当我们谈论2D或3D动画时,组织和名称的重要性达到了不同的水平。 您可以求助于动画角色,而不用担心组织的问题,而只是在工作室中进行必要的动作并在其中进行最后的决定,不幸的是,这种情况并不总是会发生。 即使捕获运动,也有许多事情需要手动修改,但是我们没有在谈论。 当多于20个时,如何纠正所有运动,确定所需的点,骨骼? 一个只有5根骨头的简单人会很容易组织和理解它们之间的联系,而现在他要增加10根手指,这会变得更加困难,对吧?

规则是相同的,但是在动画中有依赖关系和子骨骼可以简化组织。 另外,为了视觉感知,使用骨头的颜色变化。 总是有一个关键骨骼与其他骨骼相连,这些骨骼上仍然有骨骼,依此类推直到最后。 通常我们将其简称为“ 根” ,臀部或躯干离它更远,左手或右手离躯干,依此类推。 使用这些名称,我们可以更轻松地了解内容和位置。

但是突出显示的示例有助于工作 (例如Dragon Bones



主要规则


  • 名称清晰
  • 方便
  • 合理的方法

结论


例子只是我的例子。 只有一件事是显而易见的,可以肯定的是:每个人的名字,结构,顺序,但与您一起工作的人可以理解,没人会捡起您的瓦砾。 大型公司通常对组织有更高的要求,您越早学会保持秩序,将来对您越容易。
我不会雇你打扫卫生,我给你扫帚,用它。


留言



Leopotam
如果您不仅需要添加资产,还需要更新资产,那么“ ExternalAssets”是无处可走的方法。 最正确和最简单的解决方案是隔离本地项目资产(在本文中为“ InternalAssets”),并在作者准备外部资产时将它们存储-理想情况下,存储在“ InternalAssets”文件夹级别的单独文件夹中。 在这种情况下,更新变得容易又简单,您不需要按自定义文件夹对更新中可以包含的内容以及以前不存在的内容进行排序。 此外,还有一些不能移动的特殊文件夹,它们只能位于根目录中(Gizmos,插件/ Android,插件/ iOS等)。

Source: https://habr.com/ru/post/zh-CN439114/


All Articles