-
Notifications
You must be signed in to change notification settings - Fork 55
CosmosFramework操作指南
Donn edited this page Dec 3, 2022
·
4 revisions
- 在游戏入口场景,选择合适对象上添加"CosmosEntryConfig"脚本。运行Unity前勾选"CosmosEntryConfig"组件上的"PrintModulePreparatory"按钮,启动后若在控制台看
- 内置生命周期函数,此生命周期可参考Unity的MONO生命周期。需要注意,此内置生命周期适用于原生模块与自定义模块,相对于Unity生命周期是独立的。生命周期优先级依次为: OnInitialization -> OnActive -> OnPreparatory -> OnFixRefresh -> OnRefresh -> OnLateRefresh -> OnDeactive -> OnTermination
- 在CosmosFramework中,模块的定义命名规则为"xxxManager",表示为指定模块的管理器。模块由两部分组成,分别为模块接口与模块实现类。模块接口用于开放给外部调用,模块实现类用于内部具体逻辑实现,但并不开放给外部调用。
- 自定义模块实现:
using Cosmos;
public interface IMyManager : IModuleManager{}//自定义一个接口,使自定义的接口继承自IModuleManager
using Cosmos;
[Module]//标记此特性以识别是需要生成的模块
internal class MyManager :Module, IMyManager
{
//创建接口对应的类,继承自Module与IMyManager,并标记上[Module]特性
//完成以上步骤后,MyManager作为一个模块就被自动生成了。
//以此种方法定义的模块,被生成后等同于原生模块,享有完全相同的生命周期。
//注意,自定义扩展模块必须遵循:模块接口="I"+"模块名",模块类="模块名"的命名规则,否则自定义模块会生成失败!
[TickRefresh]//被标记上[TickRefresh]的方法将在Update中执行;
void TickRefresh(){}
[LateRefresh]//被标记上[LateRefresh]的方法将在LateUpdate中执行;
void LateRefresh(){}
[FixedRefresh]//被标记上[FixedRefresh]的方法将在FixedUpdate中执行;
void FixedRefresh(){}
//一个模块中只允许拥有一个#Refresh类函数。
}
按照以上格式编写自定义模块,则此模块会在启动时自动被反射机制识别并被初始化。
- 框架内置有"CosmosEntry"用于开放接口,方便外部调用模块。若用户想添加自定义模块到调用类,则按照如下格式编写。
using Cosmos;
public class MyEntry:CosmosEntry
{
//自定义实现一个类作为项目的模块入口,并继承自CosmosEntry。
//将自定义实现的模块按照以下格式写成静态属性,则整个游戏项目均可通过 MyEntry获取自定义以及原生的所有模块。
public static IMyManager MyManager { get { return GetModule<IMyManager>(); } }
}