Skip to content

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>(); } }
    }
Clone this wiki locally