使用代码驱动的游戏框架: ccc-tnt-framework

介绍

TNT 是基于 Cocos Creator 3.7.x 的游戏框架。

使用本框架可以不再深度依赖编辑器,不需要在编辑器中挂载脚本到节点(多语言还是需要的),在运行时会自动挂载脚本到节点。
这样做的优势在于可控性高,团队协作方便。
框架所有管理者单例和大部分类都挂载到了全局变量 tnt 上。
游戏启动需要有一个启动类和启动场景,将启动类挂载到启动场景中,在后续使用过程中,基本不再需要手动在节点挂载组件了。

安装

方式一 (推荐)

通过 Cocos Store 下载 TNT 插件安装

方式二

通过 仓库 Release 直接下载解压

启动

框架启动需要实现 IStartupOptions
详细的使用可以启动实例 Launcher.scene 查看,脚本同名。


// 框架初始化
tnt.startup(startupOptions);

本框架作为单独的 Bundle 使用,Bundle 名为 framework
Releases 中发布的 tnt.zip 已内置 preload-tnt.js 脚本,作用是在引擎加载阶段加载 framework Bundle
为保证在编辑器内优先加载框架代码,这里名为 framework 的 Bundle 使用了 a-framework 作为文件夹名,开发过程中其他 Bundle 尽量保证在框架 Bundle 后加载

文档目录

在线示例

https://onvia.gitlab.io/ccc-demo/tnt-example/

感谢

Preview 插件卡西法 提供

QQ群

  • 858173205

参考

MVVM

https://github.com/wsssheep/cocos_creator_mvvm_tools
https://github.com/vuejs/core.git
https://github.com/sl1673495/typescript-proxy-reactive.git

其他

https://github.com/AILHC/EasyGameFrameworkOpen
https://blog.csdn.net/xzben/article/details/120039818
https://github.com/1226085293/nodes
https://github.com/fairygui/FairyGUI-cocoscreator
https://github.com/mapeditor/tiled

30赞

仓库地址

伴生插件

https://store.cocos.com/app/detail/5109

3赞

顶起 :+1: :+1: :+1:

:cow: :beer:

框架插件还在审核,审核通过之前可以拉取仓库里面的插件使用

demo点击“基础接口”报错了

Uncaught (in promise) TypeError: Cannot read properties of null (reading 'length')
    at i._findComponent (cc.8bc99.js:1:381561)
    at e.getComponent (cc.8bc99.js:1:385723)
    at index.6c3a5.js:173:2856
    at Array.forEach (<anonymous>)
    at y.clear (index.6c3a5.js:173:2827)
    at index.6c3a5.js:173:3109
    at e.emit (cc.8bc99.js:1:215767)
    at o.<anonymous> (index.6c3a5.js:153:3516)
    at s (bundle.9447b.js:4:641)
    at Generator.<anonymous> (bundle.9447b.js:4:1982)

:cow2:

刷新网页重进下,我一下看看怎么事儿

刷新重进就好了

:+1:t2::ox::+1:t2::ox::+1:t2::ox:

哈哈,进去解决一下呗。

因为我这里没有出现过这个问题,所以这里只是尝试做了修复,仓库及预览均已提交。

mark 关注!!!

框架伴生插件已过审,地址更新在了二楼

tnt 你要炸死谁

顶起 顶起顶起

额,看了一下,感觉很多接口都完全没有必要(比如资源加载,输入,池)

因为其内只是封装/重复实现引擎接口(有部分额外功能但不多),封装的话也行,但是封装是为了使用简单而封装,但是我没有感觉到这个意思

问题,

  • 生命周期函数没有意义,你可以参考我博客园写的框架-Ui的部分

  • 多语言使用 bundle 的形式管理如果自己不提前加载资源那么每次首次切换都得卡顿。另外删除,修改模块都得手动同步所有语言bundle

给我的感受就是有帮助,但是帮助不大

1赞

感谢分享!

不使用 bundle 还有什么更好的方法实现?