主页
欢迎来到第一个开放项目:Chop Chop!
这里是该项目的用户手册,游戏内几乎所有的系统和组件都会被介绍到,你可以使用 Git 下载该项目,并且开始在这份 Wiki 文档中探索。
所有的页面都会随着游戏的开发持续更新,所以你应该在更改游戏内某个系统前,再次检查这份文档,确保自己了解最近的变化。
如果你想要参与到这个项目中,请不要忘记先阅读 提交约定 ,他们包含了很多在你第一次提交之前应该知道的信息。对于程序员来说,还需查看 代码规范 ,对于美术人员来说,还需查看 美术提交约定 。
游戏架构总览
这一块帮助你快速了解游戏架构,在每个子模块都会有链接可以帮助你了解该模块细节。
场景
(笔者:场景内容较多,请移步 场景 )
管理器和系统
以 -Manager 和 -System 命名的脚本都是 Monobehaviour,他们负责游戏全局的逻辑。你可以把他们理解为是单例,但是我们并不使用单例模式,而是使用事件驱动的架构让这些脚本监听特定事件,并且做出响应。
状态机
游戏中的角色行为是通过一个有限状态机(原文:a community-made Finite State Machine (FSM))来驱动的。该状态机一开始由各种互联的 ScriptableObjects(可以在 ScriptableObjects/StateMachine 文件夹中找到)组成,他们可作为编辑时期的数据。然后,一旦进入运行模式,他会由一个角色身上的 Monohaviour 驱动,先切换到默认状态,然后开始执行回调(可以在进入或者退出一个状态时,或者每一帧执行),判断转换的条件然后决定下一个状态应该是什么。回调和条件都可以获取并使用相关角色身上的 Monobahaviour 组件。
你可以点击状态机详情页来获取更多信息。
事件系统
事件系统是游戏架构的骨骼。我们使用叫做 Event Channel(事件频道)的 ScriptableObjects 来使物体之间相互连接,和管理器相连接,或者用于跨场景操作。
我们在项目中经常使用它,你可以点击事件系统详情页获取更多信息。
游戏数据
我们在游戏里依赖大量的 ScriptableObjects 来驱动数据。对话,查询,人物名称,事件,状态机相应等,都被存储到了 /ScriptableObjects 文件夹里。所有的字符串数据都使用 Unity 的本地化插件进行本地化。
可寻址和 AB 包(AssetBundles)
我们使用 AssetBundles 来打包场景,预制体和游戏里的一切,把它们变成一个数据块,然后在我们需要的时候加载它。我们使用了 Addressable Assets package,他可以在 AssetBundles 上封装一个抽象层,使得打包更加容易。
你可以在游戏构建的这一页上了解更多关于资源打包的信息。
笔者语
主页部分翻译自开放项目的 Wiki (d04d206),总览为 Wiki (05152b0),诸君若看到较新的版本,或笔者文章有何疏漏,可留言或电邮 zhangqrr@qq.com / ricey54560@gmail.com