{"id":14960832,"url":"https://github.com/donnyep/cosmosframework","last_synced_at":"2025-05-16T04:03:41.445Z","repository":{"id":37623405,"uuid":"233402832","full_name":"DonnYep/CosmosFramework","owner":"DonnYep","description":"CosmosFramework is a medium-lightweight plug-in Unity development framework . Has a rich Unity method extensions and toolchain. async/await syntax support, multi-network channel support.Long term support for this project","archived":false,"fork":false,"pushed_at":"2025-04-07T06:04:07.000Z","size":312655,"stargazers_count":405,"open_issues_count":1,"forks_count":55,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-05-16T04:03:22.215Z","etag":null,"topics":["aoi","assetbundle","astar-algorithm","astar-pathfinding","await-async","csharp","game-development","indiegamedev","kcp","puremvc","quadtree","tcp","tcp-client-server","unity","unity-framework","unity-package-manager","unity3d-framework","unityframework"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DonnYep.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-01-12T14:11:40.000Z","updated_at":"2025-05-14T01:22:55.000Z","dependencies_parsed_at":"2025-04-29T10:45:05.031Z","dependency_job_id":null,"html_url":"https://github.com/DonnYep/CosmosFramework","commit_stats":{"total_commits":1242,"total_committers":3,"mean_commits":414.0,"dds":0.04347826086956519,"last_synced_commit":"dc079f9b7c5e993e387877c2901789214a6db24b"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DonnYep%2FCosmosFramework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DonnYep%2FCosmosFramework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DonnYep%2FCosmosFramework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DonnYep%2FCosmosFramework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DonnYep","download_url":"https://codeload.github.com/DonnYep/CosmosFramework/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254464891,"owners_count":22075570,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aoi","assetbundle","astar-algorithm","astar-pathfinding","await-async","csharp","game-development","indiegamedev","kcp","puremvc","quadtree","tcp","tcp-client-server","unity","unity-framework","unity-package-manager","unity3d-framework","unityframework"],"created_at":"2024-09-24T13:23:08.836Z","updated_at":"2025-05-16T04:03:41.427Z","avatar_url":"https://github.com/DonnYep.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"![CosmosGitLogo](Docs/CosmosGitLogo.png)\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-brightgreen.svg)](LICENSE)\n[![Issues:Welcome](https://img.shields.io/badge/Issues-welcome-blue.svg)](https://github.com/DonnYep/CosmosFramework/issues)\n\n# [English](README_EN.md) \n\n# CosmosFramework\n\nCosmosFramework是一款中轻量级的Unity开发框架。框架拥有丰富的Unity方法扩展以及工具链。async/await语法支持，多网络通道支持，完整的资源打包流水线。支持自动化部署。框架遵循unityPackage规范，建议通过UPM导入使用。\n* [CosmosFramework Wiki](https://github.com/DonnYep/CosmosFramework/wiki)\u003cbr/\u003e\n\n\u003ca name=\"导航\"\u003e\u003c/a\u003e\n\n# 导航\n- [English](#english)\n- [CosmosFramework](#cosmosframework)\n- [导航](#导航)\n  - [环境](#环境)\n  - [启动框架](#启动框架)\n  - [模块简介](#模块简介)\n  - [内置数据结构、工具](#内置数据结构工具)\n  - [内置架构 PureMVC](#内置架构-puremvc)\n  - [注意事项](#注意事项)\n  - [UPM](#upm)\n  - [其他](#其他)\n  - [Library link](#library-link)\n\n- [ResourceEditor文档](Docs/RESOURCE_EDITOR.md)\n\n\u003ca name=\"环境\"\u003e\u003c/a\u003e\n\n## 环境\n\n- Unity版本:2018及以上,DOTNET API版本:4.x。\n\n\u003ca name=\"启动框架\"\u003e\u003c/a\u003e\n\n## 启动框架\n\n![CosmosConfig](Docs/Images/Common/CosmosConfig.png)\n- 在游戏入口处添加CosmosConfig组件，添加后即可启动框架。\n\n\u003ca name=\"模块简介\"\u003e\u003c/a\u003e\n\n## 模块简介\n\n- **Audio**: 游戏音效模块。通过注册音效信息，播放时传入音效名即可自动加载音效资源播放。音效支持分组，支持同一音效多实体播放。\n\n- **Config**:游戏常用配置模块。用户可在游戏初始化时读取配置文件，并缓存于配置模块。运行时在其他所需位置读取对应配置的数据。\n\n- **Controller**:控制器模块。使用此模块进行注册后，无需生成实体对象(GameObject)也可进行轮询管理。此模块提供Update轮询。\n\n- **DataNode**:数据缓存模块。数据以树形结构存储于此模块中，可通过web地址格式或者逗号分隔符获取对应数据的对象。\n\n- **DataTable**:数据表模块。在此模块中，数据行以对象形式存储于数据表中。数据表可实时增删改查，并通过自定义的反序列化方式生成所需要的数据对象。\n\n- **Download**:下载模块。支持localhost本地文件下载与http文件下载。文件下载时以byte流异步增量写入本地。下载中支持动态添加、移除下载任务；\n\n- **Entity**:游戏实体模块。管理游戏运行时的实体对象。实体支持组分类，通过传入资源地址可以直接管理资源实体对象的生成、回收等操作，内置对象池生成。\n\n- **Event**:事件中心模块。使用标准事件模型，提供了监听、移除、派发等常用事件功能。提供事件观测方法，可实时检测事件状态。\n\n- **FSM**:有限状态机模块。完全抽象的有限状态机，可针对不同类型的拥有者做状态机实现。\n\n- **Input**:输入适配模块。通过虚拟按键模拟各个平台的输入，传入不同的输入适配器可适配不同平台的输入方式。\n\n- **Main**:模块中心。自定义模块与扩展模块都存于此。自定义模块按照内置模块相同格式写入后，可享有完全同等与内置模块的生命周期与权限。几乎与内置模块无异。此主模块的内置轮询池:FixedRefreshHandler、LateRefreshHandler、RefreshHandler、ElapseRefreshHandler可对需要统一进行轮询管理的对象进行统一轮询，减少由于过多的Update等mono回调导致的性能损耗。\n\n- **Network**:网络模块。提供了多种高速可靠的UDP协议，如RUDP、SUDP、KCP、TCP等，默认使用KCP协议。网络以通道(Channel)形式区分各个连接，支持多种网络类型同时连接。可实现(Client-Server)模式。支持async/await语法。\n\n- **ObjectsPool**:对象池模块。提供常用的实体对象生成回收等功能。底层使用数据结构Pool进行实现。\n\n- **Procedure**:流程节点模块。方便管理运行时执行的逻辑节点，如热游戏启动节点，资源校验节点，下载资源节点，进入游戏节点等。将每个操作封装为节点，则大大有利于项目维护。\n\n- **Resource**:资源加载模块。内置提供AssetDatabase、AssetBundle以及Resource三种加载模式。AssetDatabase与AssetBundle模式支持引用计数，资源包会根据引用计数自动管理包体的加载或卸载。Runtime加载器可自定义加载方案。支持自动化流水线，如Jenkins构建部署等。资源模块对应的编辑器位于Window\u003eCosmos\u003eModule\u003eResource。开发阶段阶段使用AssetDatabase模式，构建app时使用AssetBundle模式。若需要使用Unity Resource作为加载方案，则切换为Resource模式。\n\n- **Scene**:场景加载模块。提供常用的异步、同步加载嵌入的场景功能。支持自定义实现加载方式。\n\n- **UI**:UI模块。抽象实现UI面板以及UI的加载方式。支持激活，失活，面板优先级，组别设置等功能，使用更轻便。框架提供了基于UGUI实现的面板类与资源加载帮助体。其他UI方案可自行扩展，目前稳定兼容FGUI。\n\n- **WebRequest**:UnityWebRequest模块，可用于加载持久化资源、网络资源下载等需求。支持获取AssetBundle、AudioClip、Texture2D、string。当资源获取到后，用户可通过WebRequestCallback对资源进行操作。\n\n\n\u003ca name=\"内置数据结构、工具\"\u003e\u003c/a\u003e\n\n## 内置数据结构、工具\n\n- **Utility**:提供了反射、算法、断言、转换、Debug富文本、IO、加密、Json、MessagePack、Time、Text、Unity协程、Unity组件等常用工具函数。\n\n- **Singleton**:单例基类。提供了线程安全、非线程安全、MONO单例基类。\n\n- **DataStructure**:常用数据结构。链表、双向链表、双向字典、二叉树、四叉树、AStar、LRU、线程锁等数据结构。\n\n- **Extensions**:静态扩展库。提供Unity以及C#原生的相关扩展方法。\n\n- **Awaitable** :此工具提供了async/await语法在unity环境中的支持。可以像写c#原生异步一样,在Unity中写异步。支持Task异步，Task执行完成后会回到主线程，使用时按照正常格式写即可。\n\n- **EventCore** 完全抽象的事件数据结构。内含普通、标准与线程安全类型。\n```CSharp\n    //声明一个类，使其派生自EventCore，并做类型约束。\n    public class MyEventCore :EventCore\u003cstring,string, MyEventCore\u003e{}\n    //实现后即可使用自定义的事件监听。\n```\n- **ReferencePool** :全局引用池模块。\n\n- **Editor** :Editor中提供了在Hierarchy常用检索对象、组件的方法，EditorConfig提供了代码生成是自动创建代码标头的功能；\n\n- **FutureTask**:异步任务检测，支持多线程与协程异步进度检测。检测函数需要传入Func\u003cbool\u003e格式的函数，当条件返回值为true时，异步检测结束。支持async/await语法，可使用await语句等待任务完成。\n\n- **Pool**:池数据结构。包含线程安全与非线程安全类型。框架中的对象池、引用池以及其他模块的缓存池都使用了“Pool”进行实现。\n    \n\u003ca name=\"内置架构-PureMVC\"\u003e\u003c/a\u003e\n\n## 内置架构 PureMVC\n\n- 基于原始PureMVC改进的更适于理解的架构。\n    框架提供了基于特性更加简洁的注册方式:\n    - 1.MVCCommandAttribute，对应Command，即C层；\n    - 2.MVCMediatorAttribute，对应Mediator，即V层；\n    - 3.MVCProxyAttribute，对应Proxy，即M层；\n    \n- MVC自动注册只需在入口调用MVC.RegisterAttributedMVC()方法即可。\n\n- 派生的代理类需要覆写构造函数，并传入NAME参数。\n\n- 需要注意，MVC.RegisterAttributedMVC()方法需要传入对应的程序集。支持多程序集反射。\n\n\u003ca name=\"注意事项\"\u003e\u003c/a\u003e\n\n## 注意事项\n\n- 内置案例地址:Assets\\Examples\\ 。\n\n\u003ca name=\"UPM\"\u003e\u003c/a\u003e\n\n## UPM\n\n- CosmosFramework遵循unityPackage规范，可以完全将整个库放置于Packages目录下。\n\n- 从本地导入：选择Assets/CosmosFramework文件夹，拷贝到工程的Packages目录下。\n\n- 从git导入：填入url: https://github.com/DonnYep/CosmosFramework.git#v1.3_upm\n\n\u003ca name=\"其他\"\u003e\u003c/a\u003e\n\n## 其他\n\n- 部分模块演示请观看视频:\n    - https://www.bilibili.com/video/BV11P4y1U7vB\n    - https://www.bilibili.com/video/BV1x741157eR\n    - https://www.bilibili.com/video/BV17u411Z7Ni\n    \n\u003ca name=\"Library-link\"\u003e\u003c/a\u003e\n\n## Library link\n\n- HybridCLR:https://github.com/focus-creative-games/hybridclr\n\n- CosmosEngine:https://github.com/DonnYep/CosmosEngine\n\n- QuarkAsset:https://github.com/DonnYep/QuarkAsset\n\n- KCP C:https://github.com/skywind3000/kcp\n    \n- KCP CSharp:https://github.com/vis2k/kcp2k\n    \n- TCP:https://github.com/vis2k/Telepathy\n\n- Mirror:https://github.com/vis2k/Mirror\n\n**[回到最上层](#导航)**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdonnyep%2Fcosmosframework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdonnyep%2Fcosmosframework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdonnyep%2Fcosmosframework/lists"}