找回密码
 立即注册
查看: 128|回复: 0

[笔记] 保持Unity项目布局清晰的7种方式

[复制链接]
发表于 2024-7-15 17:48 | 显示全部楼层 |阅读模式
本文翻译自 THEKNIGHTSOFUNITY 博客文章 7 Ways to Keep Your Unity Project Organized
0×00 前言

前几天我在Quora上看到的一个人,询问法式员如何编写包含10,000多行代码以上的项目。当软件变大时,维护起来就更困难了,这是事实。所以这就是事情 – 如果你不保持你的项目井然有序,你将很难跟上节奏。稍后,您将发现本身浪费时间措置混乱的项目而不是添加新功能。任何Unity项目都是如此。以下是(在我看来)最重要的提示,可以辅佐您保持项目的有序性。
0×01 资源目录布局

如果不提及组织项目目录布局,我们就不能谈论组织。Unity在这方面给你一个完全的自由,但正因为如此,它经常变得非常混乱。这是我个人使用的目录布局:

  • 3rd-Party
  • Animations
  • Audio

    • Music
    • SFX

  • Materials
  • Models
  • Plugins
  • Prefabs
  • Resources
  • Textures
  • Sandbox
  • Scenes

    • Levels
    • Other

  • Scripts

    • Editor

  • Shaders
注意:

  • 不要将任何资源存放在根目录中。尽可能使用子目录。
  • 除非确实需要,否则不要在根目录中创建任何其他目录
  • 与定名保持一致。如果您决定将camel case用于目录名称和低字母用于资产,请对峙使用该约定。
  • 不要测验考试将特定于上下文的资产移动到常规目录。例如,如果从模型生成材料,请不要将它们移动到Materials目录,因为稍后您将不知道它们来自何处。
  • 使用第三方存储从资源商店导入的资产。它们凡是有本身的布局,不应该改变。
  • 使用Sandbox 目录进行您不完全确定的任何尝试。在措置这类事情时,你最不想要关心的是一个合适的组织。执行您想要的操作,然后在确定要将其包含在项目中时将其删除或整理。当您与其他人一起措置项目时,请创建您的个人Sandbox子目录,如: Sandbox / JohnyC
0×02 场景层次布局

在项目的层次布局旁边还有场景层次布局。和以前一样,我会给你一个模板。您可以按照本身的需要进行调整。

  • Management
  • GUI
  • Cameras
  • Lights
  • World

    • Terrain
    • Props

  • _Dynamic
您应遵循以下几条法则:

  • 所有的空物体应保持在Vector3.zero,默认旋转角度和缩放比例。
  • 当您在运行时实例化(克隆) 对象时,请确保将其放在 _Dynamic 中 – 不要污染层次布局的根目录,否则您将发现难以浏览它。
  • 对于仅作为脚本容器的空对象,请使用“@”作为前缀 – 例如@Cheats。
0×03 为所有物体设置预制体(Prefab)

Unity中的预制件并不完美,但它们是您分享预先配置的对象层次布局的最佳选择。一般来说,测验考试预制你放在场景上的所有东西。只需向此中添加一个或多个预制件,您就可以从空场景中创建新关卡。
您应该使用预制件的原因是,当预制件更改时,所有实例也会更改。有100个级别,并但愿在所有这些级别上添加相机效果?不是问题!如果您的相机是预制件,只需将相机效果添加到相机预制件即可!
请注意,您不能在另一个预制件中安装预制件。改为使用链接 – 有一个需要分配预制件的字段,并确保在创建实例时分配它。当有意义时,请考虑在 Awake()OnEnable() 中自动连接预制实例。
0×04 了解如何使用版本控制系统(VCS)




图示. GIT介绍说明

您可能已经了解了有关GIT,Subversion或任何其他VCS的信息。事实上,“了解某事”只是你可能学到的一小部门。您应该专注于了解您选择的重要但不经常使用的VCS功能。为什么?主要是因为VCS系统比您想象的要强大得多,不幸的是,许多用户使用它们只不外是备份和同步解决方案。例如,您是否知道GIT允许您存储更改,因此您可以在以后措置它们而无需向主分支提交任何内容?
法式员倾向于在以后需要时注释掉代码块。不要那样做!如果您正在使用VCS,请了解如何快速浏览文件的先前版本。熟悉它时,如果没有不必要的注释代码块,代码看起来会更好。
这里有一个很好的GIT用户提示资源:http://gitready.com
0×05 学习编写编纂器脚本

Unity在可扩展性方面是一个很棒的游戏引擎(参见资产商店)。学习如何编写编纂器脚本并操作这些常识。您没有必要为脚本创建精美的GUI,它可以是简单的事情,因为菜单条目正在做一些有用的事情。以下是我不久前创建的编纂器脚本的一些示例:

  • Google表格.csv下载 – 我在Google云端硬盘上保留了一个翻译电子表格。它自动将最新版本下载为.csv文件,因此我从未必需手动完成。
  • 随机化树的位置,旋转和大小 – 我有很多树,并但愿它看起来更像丛林而不是网格。
  • 创建分发 – 为指定方针构建,压缩所有文件并复制到正确的位置。
  • 源代码中的字符串替换 – 我有几个包含应用法式版本的文件。
您可以从官方文档中学习如何创建编纂器脚本。
0×06 防御性编程

你风闻过防御性编程吗?维基百科将其定义如下:
防御性编程是一种防御性设计,旨在确保在不成预见的情况下软件的持续功能。出格是当一个软件被滥用时,使用防御性编程技术。
凡是,当您编写MonoBehaviours时,您应该确保:

  • 设置所有需要的引用
  • 存在所有必需的组件
  • 如果您使用独身,请确保它们存在
  • 如果您正在搜索对象并期望找到某些内容,请尽快进行
  • 混合编纂器代码(ExecuteInEditMode和#if UNITY_EDITOR)在运行场景之前进行尽可能多的查抄
对于此中许多查抄,您可以使用断言。您还应该阅读NullPointerException Part 1和2的故事。
0×07 添加作弊器

在学习如何编写编纂器脚本之后,您应该能够编写一组编纂器内作弊。它可以作为解锁某些内容的菜单条目(例如所有级别)。它很容易创建:
一般来说,你应该写作弊,让你:

  • 解锁所有关卡,角色,物品等
  • 给你不朽
  • 添加/减去时间,金钱,硬币等值
  • 让你看到玩家不应该看到的东西
  • 还有其他任何可以辅佐您测试游戏的东西
当然更实际(但更难写)是游戏中的作弊。这些类型的作弊可以在Unity编纂器外部执行,但您必需考虑如何执行它。请参阅我们关于实现 鼠标控制的作弊子系统的其他文章。
-EOF-

存眷微信公众号:huozk-com,查看更多关于技术、游戏、折腾的内容。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-8 09:37 , Processed in 0.141019 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表