Skip to content

适配HuaTuo、轻量、友好、易维护、可热更的Unity3d客户端框架

Notifications You must be signed in to change notification settings

DSHGFHDS/Cirilla

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

README

Cirilla

轻量、友好、易维护的Unity3d框架。

QQ群 765086420

Cirilla.png

快速开始

安装

  1. 基于目前(2022.6.15)huatuo框架的更新情况,推荐使用unity3d 2020.3.33版本。
  2. 为当前版本安装il2cpp:UnityHub→安装→对应版本设置(齿轮图标)→添加模块(不存在这个选项的因为你没有从Unity3dHub安装这个版本)→il2cpp。
  3. 安装huatuo热更框架:Unity3d打开Cirilla→头顶工具栏→HuaTuo→manager…

pic3.png

配置

  1. 项目配置表

    Asset下建立文件夹(更改为你的项目名称),并在配置表中选定为需要进行开发的项目文件即可。

  2. 流程配置表

    通过编辑器创建流程文件(或手动写继承流程Asbtract)并添加到流程配置表中,项目启动会自动进入入口流程。

    pic1.png

    pic2.png

资源打包、build和热更

  • 打包途径

    1.头顶工具栏→Cirilla→工具→资源管理器

    pic4.png

    2.直接build项目

  • build注意事项(https://focus-creative-games.github.io/huatuo/start_up/#注意事项

    pic5.png

  • 热更

    1. 修改项目代码或资源以后进行打包或build,Asset下生成StreamingAssets文件夹,里面就是打好的资源包,非移动端下替换到build好的游戏项目Data里的StreamingAssets即刻,具体包的对应信息会在打包后显示在控制台,可对照进行替换需要热更的包。移动端下(安卓、IOS)因为不支持StreamingAssets的修改,热更需要自行将热更文件下载到persistenData里。

    2. 目前暂未提供与服务器对比并更新包的功能,有需求的可自行在项目业务中开发,具体操作域在HotBuffer中。

      T1.png

介绍

MVC设计规范

Cirilla认为并非只有UI业务才适用MVC架构,MVC是一种规范,不应该受限于某种具体的业务行为,应该把一切处理unity3d场景内相关的事务视为View层(如物体渲染、创建和销毁物体、控制物体变换等等),再根据业务划分不同粒度的Model和Controller以进行管理。

Cirilla采用IOS主动MVC的设计,Controller持有View与Model,V与M之间绝对隔离,V和M通过事件驱动主动通知C进行工作。

D3.png

UIView/ObjectView

  1. 右键Hierarchy→CirillaView可创建两种View。其中UIView带有Canvas相关组件,为UI而设计的,其余并无差别。创建后,可在UIView中设计常用的菜单界面、ObjectView则可以用来设计常用的场景。完成后,拖制成预制体。

    D1.png

    D2.png

  2. 拖制成预制体后,在其中可以看到拖拽框和代码生成按钮。将View层下的、需要被生成到View层代码中以使用的子物体拖拽到框中,最后点击生成代码,就会生成相应的View层代码了。

    D4.png

    D5.png

Controller/Model

  1. Controller和Model的代码需要自己手动创建,并且继承相应的IController和IModel。

  2. 在流程中通过[Controller]标签依赖注入Controller实例(也可以通过mvc模块主动加载)。

    D6.png

  3. 因为View和Model相对隔离,并且只能被Controller所持有,所有V和M只允许在Controller中被注入实例。当然,View和Model可以被多个Controller同时持有,它们的实例也仅有且只有一个。

    D7.png

  4. Controller持有的View和Model,可以通过MV提供的公共方法进行操作(当然也可以通过事件分发机制进行完全解耦,随你)。而View和Model则只能通过事件分发机制对Controller进行主动通讯。

资源管理

Ciriila提供了一套以文件夹分类、0依赖为理念的资源管理策略,并提供了相应的打包工具和资源模块。build或在编辑器打包工具中进行打包,会自动搜索RawResources,以文件夹的形式分包进行打包,所依赖的资源一并打入相应的包中,所以包与包之间不存在依赖关系(为了减少文件冗余,应尽量将相同依赖的不同文件放在一个文件夹下)。打包过程中会将生成的项目代码dll也一并打包,具体信息在打包后会在控制台一一输出。

  • 不同命名尾缀的文件夹:
    • _public

      项目启动后立刻加载 并不再释放

    • _custom

      手动加载和手动释放

    • _base

      用来储存临时素材,打包的时候会忽略掉该文件夹以及子文件夹下的文件

    • 无尾缀

      根据使用情况动态加载和释放

功能模块

基于控制反转和依赖注入的理念,基础模块通过Ioc容器进行绑定、加载和使用。

后续会根据业务情况总结迭代更多可复用的功能。

  • 资源模块 -> IResModule
    1. 基于打包策略设计,资源统一管理。
    2. 使用简单,提供同步、异步加载、释放功能。
  • 网络模块 -> INetModule
    1. 可继承的网络实现:WebSocket、TCP,提供连接、断连、接受、发送功能。
    2. 基于lambda的Http请求功能。
  • 订阅器模块 -> IObserverModule
    1. 提供以枚举为ID、传递不定参的事件订阅、脱订、触发。
  • 对象池管理模块 -> GoPoolModule
    1. 提供预制体注册、实例申请、实例回收等基本功能。
    2. 内部通过表校验和队列分配进行统一管理。
    3. 强烈要求使用此模块管理一切游戏对象,禁止实例化和销毁。
  • 声音模块 -> IAudioModule
    1. 提供2D声音、定点声音和追随声音功能。
    2. 基于lambda的结束回调和心跳回调。
  • CSV模块 -> ICSVModule(设计的不太好,后续会取缔掉)
    1. 读取csv文件到属性表
    2. 属性表写入csv文件
  • MVC模块 -> IMVCModule
    1. 以ioc容器为基础,所有MVC代码均注册进ioc容器中,通过只允许依赖注入的方式限制MVC规范。
    2. 提供View层框架的相关编辑器工具和代码生成器。

About

适配HuaTuo、轻量、友好、易维护、可热更的Unity3d客户端框架

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages