• Stars
    star
    1,097
  • Rank 42,257 (Top 0.9 %)
  • Language
    C#
  • License
    MIT License
  • Created over 2 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Unity框架解决方案-支持HybridCLR(最好的次时代热更)与YooAssets(优秀商业级资源框架)。

TEngine

logo

TEngine

Unity框架解决方案
status license last issue topLanguage status

TEngine v3.0.0

TEngine是一个简单(新手友好)且强大的Unity框架,对于需要一套上手快、文档清晰、高性能且可拓展性极强的开发者或者团队来说是一个很好的游戏开发框架解决方案。

文档快速入门 »

服务端GitHub入口 »

为什么要使用TEngine

  1. 五分钟即可上手整套开发流程,代码整洁,思路清晰,功能强大。模块化和可定制度高,模块间的耦合度极低,您可以随时把您不需要的模块进行移除。
  2. 强大的日志系统Log,可以编辑器/真机输出日志和日志文件到可持久化目录,捕捉到Excepion的时候自定义上传。
public void Test()
{
  Log.Info("some things");
  Log.Assert(bool:condition,"assert log");
  Log.Error("error some things");
...
}
[TEngine][INFO][2022-05-20 23:44:19 871] - DevicePerformanceLevel 设备性能评级:High
  1. 高效的事件系统GameEventMgr,可以指定事件ID/事件String监听和分发事件。通过事件来驱动模块,如战斗的角色身上的事件流、UI和网络以及Model的数据流、开发中的绝大部分情况都可以通过事件来进行驱动。(配合UI模块或者拓展的战斗模块实现MVE[Model - View - Event]事件驱动架构)
public static int Hellp = StringId.StringToHash("Hellp.Hellp");

class A
{
   public A()
   {
     //添加事件监听string
     GameEvent.AddEventListener("TEngine很好用",TodoSomeThings);
     //添加事件监听int 事件ID
     GameEvent.AddEventListener(Hellp,TodoSomeThings2);
   }
}

class B
{
  private void SaySomeThings()
  {
      //发送事件流
      GameEvent.Send("TEngine很好用");
      GameEvent.Send(Hellp);
  }
}

【举个例子:游戏中血量扣除的时候,服务器发来了一个减少Hp的消息包,
我们可以在收到这个消息包的时候发送一个事件流,在玩家头顶的HP进度
条组件/左上角Hp的UI血条组件添加一个监听事件,各个模块负责自己监听后的逻辑】
Server -> SendMessage(ReduceHP)

class ClientHandle
{
  private void HandleMessage(MainPack mainpack)
  {
    ...
    HpPack hpPack = mainpack.hpPack;
    int playerId = mainpack.playerId;
    var player = PlayerMgr.Instance.GetPlayer(playerId);
    if(player != null){
      player.Event.Send("Hpchange",hpPack);       //局部的事件管理器
      GameEvent.Send("Hpchange",hpPack);  //全局事件中心
    }
  }
}

class PlayerHp
{
  public ECSEventCmpt Event { get; set; }
  PlayerHp(){
    Event.AddEventListener<HpPack>(Hellp,HandleUpChange);
  }
}

class PlayerHpUI
{
  PlayerHpUI(){
    GameEvent.AddEventListener<HpPack>(Hellp,HandleUpChange);
  }
}
  1. 健壮的资源模块TResources,开发者只用关注一个接口便可以通用的在编辑器进行资源加载或者真机加载AB,包括打包AB等等。通过类AssetConfig统一配置本地资源加载和AB打包的路径(AssetRootPath),AB加密偏移也在底层处理,更安全的保护了您的项目,测试无法被AssetStudio解密,并且经测试AB加密偏移性能几乎无影响。
    增加了AB资源计数的概念,提供了AB桥接器IResourceHelper,你可以拓展此接口实现自己的资源管理器以便于接入XAssets或者是YooAssets等等。

4.救世的HybirdCLR(huatuo)热更新(目前支持大部分Unity2020-2021 lts等版本)

//项目结构
Assets
├── AssetRaw            // 热更资源目录
├── Atlas               // 自动生成图集目录
├── HybridCLRData       // hybridclr相关目录
├── TEngine             // 框架核心目录
└── GameScripts         // 程序集目录
    ├── Editor          // 编辑器程序集
    ├── Main            // 主程序程序集(启动器与流程)
    └── HotFix          // 游戏热更程序集目录 [Folder]
        ├── GameBase    // 游戏基础框架程序集 [Dll]
        ├── GameProto   // 游戏配置协议程序集 [Dll]  
        ├── BattleCore  // 游戏核心战斗程序集 [Dll] 
        └── GameLogic   // 游戏业务逻辑程序集 [Dll]
            ├── GameApp.cs                  // 热更主入口
            └── GameApp_RegisterSystem.cs   // 热更主入口注册系统   
  • 必要:项目使用了以下第三方插件,请自行购买导入:
    • /Unity/Assets/Plugins/Sirenix


优质开源项目推荐

YooAsset - YooAsset是一套商业级经历百万DAU游戏验证的资源管理系统。

JEngine - 使Unity开发的游戏支持热更新的解决方案。

HybridCLR - 特性完整、零成本、高性能、低内存的近乎完美的Unity全平台原生c#热更方案

交流群

群 号:862987645