0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

unity项目优化之资深程序员分享七大方法理顺unity项目

电子工程师 来源:网络整理 2018-11-12 14:19 次阅读

一天,我在Quora上看到一个人问:程序员如何用超过一万行的代码编写一个项目。软件做的越大,维护就越困难,这是一个不争的事实。所以这面临的问题就是如果你不让你的项目有条理,就会很难维护它。到后期,你就会发现你并不是在添加新功能而是在把时间浪费在一个凌乱的项目上。每一个Unity项目也是这样的。在我看来,这是非常重要的技巧,可以帮助你保持你的项目条理性。

1. Directory Structure 【目录结构】

我们不能够在不提到项目目录结构的情况下谈论组织结构。Unity让你可以自由的创建自己想要的目录结构,也正是因为这样,它可能让项目很混乱。下面是我个人使用的目录结构:

3rd-Party(第三方资源)
s
Audio
1、Music
2、SFX
Materials
Models
Plugins
Prefabs
Resources
Textures
Sandbox
Scenes
1、Levels
2、Other
Scripts
1、Editor
Shaders

不要在根目录存储任何资源文件,尽可能使用子目录。

除非需要,否则不要在根目录中创建一些额外目录。(意思是不要在根目录创建一些无用目录)

命名一致性。如果你决定使用“骆驼拼写法(骆驼拼写法的意思是依靠单词的大小写拼写复合词:例如:PlayStationGameManager)”编写目录名和小写字母编写资源,请一直遵守这个规则。

不要尝试将有链接性的特定资源文件移动到常规目录或者通用目录。例如有些Materials是从模型生成的,不要将它们移动到通用目录或者其他Materials目录中,因为你下一次就不知道这些材质来自哪里了。

使用从资源商店下载的第三方资源,不要随便改变其原本的结构。

使用Sandbox(沙盒)目录来测试你不完全确定的东西。当做测试的同时,你最先需要关心的是一个合适的组织结构。这样不论你最后想删除它还是把它组织到你的项目中都可以。当你

与其他人一起工作时,请创建你个人的SandBox子目录,例如:Sandbox/JohnyC。

2. Scene hierarchy structure 【场景层次结构】

在项目层次结构之后也有场景层次结构。像上面的一样,我将提供一个模板,你可以根据你自己的需要进行调整。

Management
GUI
Cameras
Lights
World
1、Terrain
2、Props
_Dynamic

你应该遵循几个规则:
所有空对象应位于(0,0,0,)坐标点,默认旋转和缩放。

当你运行中实例化对象时,请确保将其放在_Dynamic中,不要污染层次结构的根目录,否则将难以浏览Scene hierarchy下的文件(文件太多)。

对于仅用于挂载脚本的空对象,请使用“@”作为前缀。例如@Cheats

3. Use prefabs for everything 【使用预制体进行所有操作】

Unity中的Prefabs并不完美,但是你会发现,它们是共享预配置信息的最好方法。一般来说,我们可以把你想放到场景中的所有东西都做成预制体。你可以仅仅通过创建预制体来从一个空场景中创建新的关卡。

我们应该使用预制体的原因是当预制体有更改时,所有预制体的实例对象也会做相应改动。如果有一百个关卡都需要给相机添加一个相同的效果呢?没问题,如果你的相机是预制体,只需要将效果添加到预制的相机上就行。

不过要注意,你不能在另一个预制体上使用预制体。可以使用代码字段链接解决此种预制体实例预制体的情况,并且确保在父预制体实例的时候才运行该代码字段。可以考虑在Awake()或者OnEnable()中自动检测执行实例预制体对象。

4. Learn how to use version control system (VCS) 【学习如何使用版本控制系统(VCS)】

你可以已经知道Git、Sbuversion或者其他版本控制工具。可能实际上也只是知道,而并不是很熟悉。其实我们应该了解我们所使用的的VCS的可能不经常使用的另一些重要功能。为什么呢?因为VCS系统比我们想象的要强大的多,而大部分人只是用来备份和同步解决方案。例如,你是否知道GIT是可以允许你隐藏你做的更改,以便你快速处理而不需要向主分支提交任何内容。

程序员倾向于注释掉代码块,以便于稍后来使用。不过不建议这样做。如果你使用VCS,你可以学习如何快速查看先前的版本文件。当你熟练操作VCS后,你会少很多注视到的无用代码块,让你的代码看起来更简洁好看。

下面的链接是一个GIT用户的版本代码查看的使用演示:

5. Learn to write editor scripts 【学习编写编辑器脚本(工具脚本,编辑器扩展脚本等)】

Unity作为游戏引擎,在扩展性方面是非常棒的(参见Asset Store)。学习如何编写编辑器脚本并利用这方面知识。你不需要为脚本创建过多的GUI,它是一些可以做非常有用的事情的简单菜单项。以下是我不久前创建的编辑器脚本的一些示例:

Google Sheets.cvs download——我有一个保存在Google云盘的电子转换表格。该工具可以自动下载为最新的.cvs文件,所以我从来没有手动去下载过。

Randomize the position,rotation and size of trees——当有很多树的时候,可以使它们看起来想一个森林,而不是像格子一样整齐排列。

Create distribution(创建分发)——为指定目标创建一个可以将所有文件移动到或者复制进去的路径。

String replace in the sources(资源文件的字符串替换)——我有几个文件,其中包含该工具的不同的程序版本。

你可以从官方文档中学习如何编写编辑器脚本。

6. Learn to program defensively 【学习防御性编程

防御性编程是防御式设计的一种形式,旨在确保在不可预见的情况下维持软件可发展性的功能。防御性编程技术特别是在软件被滥用时应用更为广泛。

通常,当你写MonoBehaviours时,你应该确保以下几点:

1、所有需要用到的参考是设置的
2、所有必须的组件是存在的
3、如果你使用单例,确保它们是存在的
4、如果你搜索对象或者想要找到某些属性,请尽可能用最快速的方法
5、混合编辑器代码在运行场景前进行多次检测
For many of these checks you can use asserts. You should also read A Story of NullPointerException Part 1 and 2.

7. Implement in-editor and/or in-game cheats 【在编辑器或者游戏中实现作弊系统)】

在学习如何编写编辑器脚本后,你应该能够编写一组编辑器中的作弊工具。它可以通过菜单选项来解锁一些东西。(例如,所有的等级限制)。这真的很容易编写。

• 通常你都应该写一个作弊工具,它可以让你:
• 解锁所有等级限制、角色、道具等。
• 加一个无敌。
• 加减数值,如,时间、金钱、硬币等。
• 使自己看到玩家看不到的东西(上帝视角)。
• 其它任何可以帮助你测试你的游戏的东西都可以。

当然更实用但是也更难写的是游戏中的作弊秘籍。这些类型的作弊可以在Unity编辑器之外执行,但是你必须考虑到底需要怎么执行。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 程序员
    +关注

    关注

    4

    文章

    951

    浏览量

    29798
收藏 人收藏

    评论

    相关推荐

    UCD3138A64/UCD3138128程序员手册

    电子发烧友网站提供《UCD3138A64/UCD3138128程序员手册.pdf》资料免费下载
    发表于 12-09 14:42 0次下载
    UCD3138A64/UCD3138128<b class='flag-5'>程序员</b>手册

    机械革命发布CODE AI程序员

    近日,英特尔新质生产力技术生态大会在成都举行,机械革命作为重要参展商带来了多款明星产品引爆全场!其中更是在AI PC软件生态产品发布分论坛上,Intel、智谱、机械革命三方联合发布了专为程序员设计的CODE AI程序员本,成为本次大会的一大亮点。
    的头像 发表于 11-30 10:34 372次阅读

    Linux驱动程序程序员指南

    电子发烧友网站提供《Linux驱动程序程序员指南.pdf》资料免费下载
    发表于 11-22 15:53 0次下载
    Linux驱动<b class='flag-5'>程序</b><b class='flag-5'>程序员</b>指南

    AI编程工具会不会抢程序员饭碗

    AI编程工具可辅助编程,减少手动编码,提升效率,对程序员有积极影响也有挑战。程序员需深化技能、拓宽知识应对。长远看,AI与人类程序员将共生共荣。
    的头像 发表于 11-08 10:17 157次阅读

    第五届长沙·中国1024程序员节开幕

    据官方媒体报道,10月24日;  第五届长沙·中国1024程序员节在湖南湘江新区开幕;本次中国1024程序员节以“智能应用新生态”为主题。设置有岳麓对话、技术英雄会、主题峰会及赛事、展览等活动,一场
    的头像 发表于 10-25 15:42 192次阅读

    请问Unity Gain Bandwith是什么?

    请问Unity Gain Bandwith是什么?
    发表于 09-06 07:42

    Unity中国与洲明科技携手共创光显新纪元

    近日,Unity中国与洲明科技在业界瞩目中宣布达成战略合作,标志着双方在光显技术领域的深度合作正式拉开帷幕。此次合作,双方将深度融合各自在技术与资源上的优势,共同探索实时3D内容创作的新边界,以及IP运营、内容创作平台与生态的无限可能。
    的头像 发表于 07-27 14:32 710次阅读

    Unity中国与洲明科技达成战略合作

    近日,为期三天、备受瞩目的全球Unity开发者大会 Unite2024在上海开幕。
    的头像 发表于 07-27 09:40 354次阅读

    程序员节视频创意大赛,用串口屏赢取千元大奖

    10月24日,程序员专属的节日里,我们盛大开启“程序员节视频创意大赛”特别活动!这不仅是一场视觉的盛宴,更是智慧与创意的璀璨碰撞。我们诚挚邀请每一位程序员及编程爱好者,拿起你的镜头,记录下那些平凡日子中的不凡瞬间,让编程的魅力与
    的头像 发表于 07-08 10:38 72次阅读
    <b class='flag-5'>程序员</b>节视频创意大赛,用串口屏赢取千元大奖

    程序员节视频创意盛宴,邀您共襄盛举!

    10月24日,程序员专属的节日里,我们盛大开启“程序员节视频创意大赛”特别活动!这不仅是一场视觉的盛宴,更是智慧与创意的璀璨碰撞。我们诚挚邀请每一位程序员及编程爱好者,拿起你的镜头,记录下那些平凡日子中的不凡瞬间,让编程的魅力与
    的头像 发表于 07-04 09:00 67次阅读
    <b class='flag-5'>程序员</b>节视频创意盛宴,邀您共襄盛举!

    2024 Unity游戏报告洞见:市场变化莫测,游戏工作室大胆优化资源韧性

    Unity 在 2024 年游戏开发者大会(GDC)上发布了2024年Unity 游戏报告。该报告指出,尽管 2023 年是经济面临持续挑战的一年,但游戏开发者以更少的资源取得了更大成就,成功应对了技术、经济和玩家习惯的变化。尽管预算紧张,工作室仍在进行实验、投入资源并
    的头像 发表于 03-19 22:25 745次阅读
    2024 <b class='flag-5'>Unity</b>游戏报告洞见:市场变化莫测,游戏工作室大胆<b class='flag-5'>优化</b>资源韧性

    适者生存,程序员最终会流向哪……

    程序员没有永远的护城河!!就目前的互联网大环境来看,it行业已经是……
    的头像 发表于 03-11 17:11 407次阅读
    适者生存,<b class='flag-5'>程序员</b>最终会流向哪……

    薪资高、青春饭,是不是程序员=青楼?

    花期太短。技术迭代快,年龄大容易失业。 就这几年的互联网环境而言,不管是前端、Java、Android开发等等行业。已经感受到程序员不是太卷就是工作难找,薪资过低。以前高工现在拿着中低程序员薪资
    发表于 03-06 21:32

    2024程序员的未来方向如何走?还看今朝

    这几年的IT行业想必大家已经感受到了,Android、Java、前端等等程序员都经历了大厂……
    的头像 发表于 02-02 09:45 815次阅读
    2024<b class='flag-5'>程序员</b>的未来方向如何走?还看今朝

    Unity正式支持苹果visionOS平台订阅用户

    开发者需使用 Unity Hub 下载最新的 Unity 2022 LTS 版本,并安装 visionOS Build Support 插件方能为 Vision Pro 打造空间应用。有一点值得关注,现阶段visionOS 的开发仅限于采用苹果自研芯片的 Mac 电脑。
    的头像 发表于 02-01 11:09 811次阅读