Git Product home page Git Product logo

yimengfan / bdframework.core Goto Github PK

View Code? Open in Web Editor NEW
2.4K 92.0 452.0 1.03 GB

Simple and powerful Unity3d game workflow! 简单、高效、高度工业化的商业级unity3d 工作流。

License: Apache License 2.0

C# 19.87% ShaderLab 1.35% HLSL 1.15% GLSL 0.06% Shell 0.01% Batchfile 0.01% ASP.NET 0.82% Python 0.02% C++ 69.15% C 7.42% Objective-C++ 0.02% HTML 0.02% CSS 0.12%
unity3d unity3d-framework unity3d-hotfix ilruntime u3d unity unity3d-games hotfix hotupdate ilr

bdframework.core's Introduction

logo.png

作者寄语(Introduction)

Simple! Easy! Professional! This‘s a powerful Unity3d game workflow!
BDFramework的设计理念永远是:工业化、流水线化、专业化!
永远致力于打造高效的商业游戏工作流.
BDFramework大部分功能开发都是围绕一整条工作流,以Pipeline的形式放出.
如:BuildPipeline、PublishPipeline、DevOps 等...
对于第三方库使用也都是为了Pipeline深度定制,很多时候为了一些使用体验优化会编写大量的Editor编码.
这也是BDFramework的设计理念之一:
能编辑器解决的,就不要业务层解决!能自动化的,就不要手动!
BDFramework没有什么看上去很酷炫的功能,大都是一点一滴的积累,一点点的增加自动化,一点点的增加业务编码的体验.也正是因为有这样的坚持,才会有这套框架的出现.
更多的是做一些商业技术方案的分享和讨论.
因为一些特殊原因,只能放出一些游戏基建方案Pipeline的实现,
不会有对具体业务逻辑的解决方案,所以整套workflow更像是一套游戏开发脚手架.
望理解!
最后,
虽然该框架能开箱即用,但我个人建议且鼓励 :进行自己的思考,并为自己项目进行改造!
有任何疑问也欢迎讨论~

社区(Community)

在线提问、交流(Online Discussions): 点击

第十艺术交流: 点击加群

If you find a bug or have some suggestions,please make issue! I'll get back to you

任何问题直接提issue,24小时内必解决 (有时候邮件抽风,没收到,需要在群里at下我~)

安装使用(Start)

OpenUPM(强烈推荐): 链接

发布(Publish)

稳定版本托管在OpenUPM : 链接

支持2019、2021 、团结引擎, Unity6以上Runtime付费 不再提供支持维护!!!

支持2019、2021 、团结引擎, Unity6以上Runtime付费 不再提供支持维护!!!

支持2019、2021 、团结引擎, Unity6以上Runtime付费 不再提供支持维护!!!

Unity2018 - ObsoleteBranch

Unity2019 - 链接 (当前主干)

Unity2021 - [待测试]

团结引擎 - [待测试]

版本开发流程:
=》修改、Fixed bug、新功能加入 基于Master(目前为Unity2019)
=》Merge to Unity2021测试

文档(Document)

中文 Wiki

V2.1版本:

-增加BuildPipeline!

-增加PublishPipeline!

-增加HotfixPipeline!

-全面支持DevOps工作流.

V2版本:

1.全面升级为UPM管理

2.全面适配URP管线工作流

3.全面定制Unity Editor环境,升级编辑器操作。更便捷、人性化的开发体验

4.全面优化框架启动速度,重构部分远古代码。

5.UFlux UI工作流全面升级:更智能的值绑定、更简单的工作流、更方便的自定义扩展、DI等...

6.更全面的文档

7.商业级的Demo加入,后续会开放免费商业级项目开发教程

V1版本:

C#热更(C# hotfix):

  • 自定义编译服务
  • 可选工程剥离(热更可以不拆工程)
  • 一键打包热更DLL
  • 兼容DevOps、CI、CD.

表格管理(Table Manage):

  • Excel一键生成Class
  • Excel一键生成Sqlite、Json、Xml等
  • 服务器、本地表格分开导出.
  • 自定义配置保留字段、单条记录等.
  • SQLite ORM工具(兼容热更)
  • 自定义表格逻辑检测.
  • 兼容DevOps、CI、CD.

资源管理(Assets Manage):

  • 重新定制目录管理规范、指导管理.
  • 一套API自动切换AB和Editor模式,保留Resources.load习惯.
  • 可视化打包逻辑配置、0冗余打包.
  • 可扩展打包规则
  • 分包机制.
  • 打包逻辑纠错机制.
  • 内置增量打包机制,防止不同机器、工程打包AB不同情况.
  • 自动图集管理.
  • 自动搜集Shader Keyword.
  • 可寻址加载系统.
  • Assetbundle混淆机制,一定程度下防破解资源.
  • Assetbundle 同、异步加载校验.
  • Assetbundle 加载性能测试.
  • Editor下完整支持
  • 兼容DevOps、CI、CD.

一键版本发布(Publish):

  • 代码、资源、表格一键打包,版本管理自动下载.
  • 内置本机文件服务器
  • 兼容DevOps、CI、CD.

UI工作流(UFlux):

  • 提供一套Flux ui管理机制(类似MVI)
  • 完善的UI管理,可配合任意NGUI、UGUI、FairyGUI等使用
  • 完整的UI抽象:Windows、Component、State、Props...
  • 支持UI管理、值绑定、数据监听、数据流、状态管理等
  • 支持DI依赖注入.

业务管理(Logic Manage):

  • 管理器和被管理类自动注册
  • 在此之上BD实现了ScreenviewManger,UIManager,EventManager...等一些管理器.使用者根据自己的需求可以实现其他的管理器.
  • Editor下完整支持.

导航机制(Navication):

  • 模块、用户Timeline等导航机制.
  • 方便做模块调度、划分等逻辑...

全面定制Editor:

  • 提供完整的编辑器生命周期,方便可定制、拓展.
  • 完整的测试用例,保证框架的稳定.
  • 所有功能全面兼容DevOps、CI、CD等工具.
  • 其他大量的定制Editor,以保证使用体验...(太多了统计不过来)

有很多细枝末节的系统就不列举了...

项目实践流程:

image.png

贡献者名单

@gaojiexx
@ricashao
如果需要项目方案定制、企业支持,可以联系 QQ:755737878.
也随时欢迎交流各种技术.
如果您有好的修改或者拓展,也随时欢迎讨论和提PR.

bdframework.core's People

Contributors

alanweekend avatar gaojiexx avatar haozi000005 avatar yimengfan avatar yimengfan1994 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bdframework.core's Issues

看到一个拼写错误

M_ManagerBase 的 public M_ClassData GetCalssData(string typeName)

GetCalssData --> GetClassData

更多模块封装

本地化,网络,web, 对象池,音效特效管理,配置等等有计划加上么

如何加载TP图集( 兼容 Resources.LoadAll 接口 )

官方文档写的是图集采用SA方案
但目前项目已经使用了TP方案,若修改SA方案估计有点难
替换旧接口【Resources.LoadAll】,比如
Object[] allObj = Resources.LoadAll("Art/Cans/CansPack", typeof(UnityEngine.Sprite));
却发现BResoureces 只有单个图片读取Load ....

请问下,该怎么兼容 Resources.LoadAll 接口?

2.1.0 last realese 导入之后报错

您好:
2.1.0 版本, 导入Asset.unitypackage之后,提示错误:
Assets\Code\BDFramework.Game\ILRuntime\Binding\Analysis\System_Collections_Generic_List_1_Hero_Bindi_t1.cs(37,186): error CS0234: The type or namespace name 'Data' does not exist in the namespace 'Game' (are you missing an assembly reference?)

README 勘误

image

视屏 -> 视频

image

Dpendent plugins -> Dependent plugins

Shader变体收集提示bug

如果没有runtime目录(paths空数组),AssetDatabase.FindAssets("t:Shader", paths) 会返回所有shader啊,然后全部都提示“不建议将shader放在runtime中,没有mat信息 无法搜集变体!”

关于UIManager 类

                        com.AsyncLoad(() =>
                        {
                            curTaskCount++;
                            if (com.Transform)
                            {
                                com.Transform.gameObject.SetActive(false);
                                com.Transform.SetParent(this.Bottom, false);
                            }
                            //推送缓存的数据
                            PushCaheData(index);
                            //回调
                            loadProcessAction?.Invoke(allCount, curTaskCount);
                        });

大佬 这断使用闭包的做法,会不会每次调用都有gc?

资源热更 增量更新bug

A依赖B时 B改变 A不做任何变化时 打包出的AssetBundle两个资源也都会改变(AssetBundle包的md5有改变) 但现在的机制会跳过A 导致加载旧的A的AssetBundle包时 丢失对B的引用
测试环境 2019.1.11
A为Cube B为材质

loading场景demo

框架**很好,希望作者能提供一个场景跳转loading和热更loading界面的demo,万分感谢

ShaderCollection 收集不全

ShaderCollection.cs 只收集的prefab.Material 的变体。没有收集Scene上的变体。而有些变体,比如URP 后期都是动态创建的材质。

v2资源卸载问题

打包时会手动把自身依赖自己删除,卸载资源时只把依赖的计数减1,未减自身,导致自己卸载不掉

URP打包

打AB,发现URP的shader还是和材质一起打包在一起,怎么避免冗余呢?

继承AWindow 和 MonoBehaviour 的Window,是否可以共存混用

因为旧项目原因,一次性改动太大,想分批改动Window界面
在想 AWindow 和 MonoBehaviour ,是否可以共存混用
测试如下:

  1. Window_Login 继承AWindow
    TestMonoView : MonoBehaviour
  2. 打AB包,上传到服务器
  3. 逻辑如下,Login 界面 创建 MonoView 界面,然后在返回 MonoView 界面,点击返回,调用 UIManager.Inst.ShowWindow(WinEnum.Win_Login); 报错了,断点调试后发现UIManager.Inst` 竟然重新new对象了( UIManager.Inst 在前面已经初始化,这是单例)

过来请教一下

  1. AWindow 和 MonoBehaviour ,是否可以共存混用 ?
    其他项目若要使用BD, 可能也会遇到这种情况,否则可能要一次性全部改完,累....
  2. 为什么 UIManager.Inst 会new了两次?
    感觉像是两份独立空间?一个在BDFramework new , 另一个在Mono 这里new了一份,不是同一个?
  3. 在代码 Editor 模式下,执行正常,但在 Persistent 就报这个错了
  4. 在MonoBehaviour 可以在编辑器模式下断点调试,但BD 的代码不能断点调试?

谢谢~~

附图如下:
5555

Nuget的库报错

Nuget报错,然后assembly.GetTypes() 用不了了。。。。。
Unloading broken assembly Packages/com.popo.bdframework/Nuget/Microsoft.CodeAnalysis.Analyzers.3.3.2/analyzers/dotnet/cs/Microsoft.CodeAnalysis.Analyzers.dll, this assembly can cause crashes in the runtime

image
这个选了4.X
image
mac机器

Demo中GetInterface返回NULL!

//游戏启动器
else if (gameStart == null && t.GetInterface("IGameStart") != null)
{
BDebug.Log("GameStart created!!!!","red");
gameStart = Activator.CreateInstance(t) as IGameStart;
}

这个if一直进不去,是由什么需要设置的吗,
if(t.BaseType == null && "GameStartTest" == t.Name)
{
BDebug.Log("t type is: " + t.Name + ":" + t.IsInterface, "green");
if (t.GetInterface("IGameStart") != null)
{
BDebug.Log("t type is: " + t.IsInterface + ":" , "green");
}
}
我添加了测试代码,第一个log有,后面一个一直打印不出来,是热更工程里面的getinterface返回不对吗?Unity 2018.2.3f1 vs2017

中后期项目可否使用BDFramework

刚接触到这个这框架,有种蠢蠢欲动想要使用的感觉,但目前项目进行到中后期阶段,如果要使用,方便修改吗?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.