不管是 System、Model 还是 Utility,都会注册到 Architecture 中。
伪代码如下:
namespace QFramework.PointGame
{
public class PointGame : Architecture<PointGame>
{
protected override void Init()
{
RegisterSystem<IScoreSystem>(new ScoreSystem());
RegisterSystem<ICountDownSystem>(new CountDownSystem());
RegisterSystem<IAchievementSystem>(new AchievementSystem());
RegisterModel<IGameModel>(new GameModel());
RegisterUtility<IStorage>(new PlayerPrefsStorage());
}
}
}
大家可能会问,如果一个项目有非常多的 System、Model、Utility 全部注册到 Architecture,这样 Architecture 的代码量就变多了,会不会让项目变得难以管理?
答案是不会,Architecture 注册的模块越多,这套架构发挥的作用就越大。
因为 Architecture 本身就能很好地展示项目的结构,可以把 Architecture 本身当做一个架构图。
比如以上伪代码对应的架构图如下:
非常清晰。
而伪代码中只有 5 个注册模块,是非常少见的,一般情况下,项目都会注册十几个甚至几十个模块,也有上百个模块的时候。
而如果这些模块没有用 QFramework 而全部使用单例实现的话,项目就会变得很混乱。
而使用了 QFramework,我们就可以在 Architecture 中统一集中管理这些模块,是方便项目管理的。
这就是使用 Architecture 的优势。
这里,再贴出一下笔者曾经写的项目的 Architecture,代码如下:
using IndieGame.Models;
using IndieGame.Utility;
using QFramework;
using UnityEngine;
using UTGM;
namespace IndieGame
{
public class LiangxiesGame : Architecture<LiangxiesGame>
{
public static bool IsTestMode = true;
public static void SetTestMode(bool testMode)
{
IsTestMode = testMode;
}
protected override void Init()
{
RegisterSystem<ISaveSystem>(new SaveSystem());
RegisterSystem<IInputSystem>(new InputSystem());
RegisterSystem<ILevelSystem>(new LevelSystem());
RegisterSystem<IBookSystem>(new BookSystem());
RegisterSystem<IMapSystem>(new MapSystem());
RegisterSystem<IGameTimeSystem>(new GameTimeSystem());
RegisterSystem<IRankSystem>(new RankSystem());
RegisterSystem<IGameSystem>(new GameSystem());
RegisterSystem<ILuaSystem>(new LuaSystem());
RegisterSystem<IAchievementSystem>(new AchievementSystem());
RegisterSystem<IEnemyRecycleSystem>(new EnemyRecycleSystem());
RegisterSystem<IUISystem>(new UISystem());
RegisterSystem<IHurtSystem>(new HurtSystem());
RegisterSystem<ILevelUpSystem>(new LevelUpSystem());
RegisterSystem<ILevelConfigSystem>(new LevelConfigSystem());
RegisterModel<ICoinModel>(new CoinModel());
RegisterModel<ISettingModel>(new SettingModel());
RegisterModel<IBookModel>(new BookModel());
RegisterModel<IMechanismModel>(new MechanismModel());
RegisterModel<IPlayerModel>(new PlayerModel());
RegisterUtility<IStorage>(new EasySaveStorage());
Application.persistentDataPath.CreateDirIfNotExists();
}
}
}
System 层有什么、Model 层有什么、Utility 层有什么,一目了然。
好了,这篇就到这里。
更多内容
- 转载请注明地址:liangxiegame.com (首发) 微信公众号:凉鞋的笔记
- QFramework 主页:qframework.cn
- QFramework 交流群: 623597263
- QFramework Github 地址: https://github.com/liangxiegame/qframework
- QFramework Gitee 地址:https://gitee.com/liangxiegame/QFramework
- GamePix 独立游戏学院 & Unity 进阶小班地址:https://www.gamepixedu.com/