🚀 Unity 游戏开发框架

UFRAME

模块化 · 高性能 · 易扩展

专为 Unity 游戏开发设计的企业级模块化框架
提供完整的游戏开发解决方案,让开发更简单、更高效

50+
核心模块
Unity 2021.3+
支持版本
MIT
开源协议
GameManager.cs
using UFrame;

public class GameManager : Singleton<GameManager>
{
    protected override void OnInitialize()
    {
        // 初始化游戏系统
        UIManager.Instance.Initialize();
        AudioManager.Instance.Initialize();
        NetworkManager.Instance.Connect();
    }
}

系统架构

分层设计,职责清晰,易于维护和扩展

🎮

应用层

Application Layer

游戏逻辑
🎨

UI 层

BridgeUI System

界面管理
⚙️

业务逻辑层

Business Logic

BehaviourTree PureMVC Task
🌐

网络层

NetSocket

TCP/UDP
📦

资源层

AssetBundles

热更新
🏗️

基础层

Foundation & Manage

Singleton Logs Pool Timer

核心模块

50+ 个功能模块,涵盖游戏开发的方方面面

核心特性

强大的功能特性,助力游戏开发

🔐

线程安全

双重检查锁定机制确保单例模式的线程安全,支持多线程环境下的稳定运行

高性能

对象池、资源管理、异步加载等优化策略,确保游戏流畅运行

🎯

优先级控制

灵活的优先级系统,精确控制模块初始化和更新顺序

🔄

生命周期管理

完整的生命周期钩子,自动化资源管理,避免内存泄漏

🧩

模块化设计

松耦合的模块化架构,按需引入,易于扩展和维护

🛠️

开发工具

丰富的编辑器工具,提升开发效率,简化开发流程

快速开始

简洁的 API 设计,快速上手

// 创建单例管理器
public class AudioManager : Singleton<AudioManager>
{
    protected override void OnInitialize()
    {
        // 初始化音频系统
        LoadAudioResources();
    }
    
    public void PlayMusic(AudioClip clip)
    {
        // 播放背景音乐
        musicSource.Play(clip);
    }
}

// 使用方式
AudioManager.Instance.PlayMusic(bgMusic);
// 打开 UI 面板
UIFacade.Instance.Open("MainMenu");

// 传递数据
UIFacade.Instance.Open("GameUI", new {
    playerName = "Player1",
    level = 10
});

// 关闭面板
UIFacade.Instance.Close("MainMenu");
// 创建自定义行为节点
[NodePath("AI/攻击敌人")]
public class AttackNode : ActionNode
{
    protected override byte OnUpdate()
    {
        var enemy = FindNearestEnemy();
        if (enemy != null)
        {
            enemy.TakeDamage(damage);
            return Status.Success;
        }
        return Status.Failure;
    }
}
// 定义数据包
[Packet(0x1001)]
public class LoginPacket : IPacket
{
    public string username;
    public string password;
}

// 连接服务器
var client = new SocketClientBuilder()
    .ConfigureServices(services =>
    {
        services.AddPacketHandler<LoginPacket>();
    })
    .Build();

session = await client.ConnectAsync("127.0.0.1", 8080);

文档与资源

详细的文档和示例帮助你快速上手