1 Star 13 Fork 4

杉木说 / Unity-XLua-Hotupdate

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MulanPSL-2.0

Xlua-Template

介绍

XLua热更项目模板 有问题联系qq:33805103 请注明来意!!! 有新想法或bug修复会更新

软件架构

1.Assetbundle框架 2.UI框架 3.热更功能实现 4.Lua框架 5.红点通知系统 6.公告提示信息滚动通知栏 7.Hotfix热修复 8.编辑器本地加载,热更加载模式切换 9.UI动画功能(使用DOTween实现) 10.快捷Debug功能,捕获错误

安装教程

直接将这个项目作为项目初始工程就行 开始场景:Assets/Scenes/Entrance.unity

使用说明

对Unity版本没什么要求,都是写底层基础的代码。 Unity开发版本:2020.3.29f1c1 使用低于该版本的Unity猜测也是没啥问题的。接口问题,酌情修改即可

参与贡献

啊呆(开发者)

大概说明

1.Assetbundle框架: 1)自动标记指定文件夹下的所有资源,不同文件已模块区分 2)打包被标记的资源,打包策略是根据场景来设置的 3)复制lua文件到生成Assetbundle的路径 4)生成校验文件【MD5和文件大小以及相对路径】-包括lua文件和ab资源,上传服务器即可完成部署

5)热更功能:服务器下载资源,资源比对,更新差异文件
	下载资源时能够获取到下载进度
		单个文件的下载进度
		总进度*已经下载文件个数/总需要下载的数量

***自动化发布资源流程【可视化发布资源窗体】
一键 【标记资源,打包资源,复制lua文件,生成校验文件,将需要热更的资源上传到服务器】即可

2.UI框架 不同UI窗体的层级管理 UI动画使用DOTWeen

包含UI打开关闭时的动画20个左右-旋转 移动 缩放 淡入淡出 单轴缩放 浮动 震动

UI窗体打开时只需要配置数据即可实现:
1.模态窗 ,遮罩颜色,窗口类型,点击空白区域退出,是否缓存,是否播放打开时音效以及音效配置
2.反向切换功能 (打开一个窗口关闭上一个窗口,关闭时又恢复显示上一个窗口)
3.打开时关闭其他窗口,关闭时可以选择是否恢复之前被关闭的窗口
4.配置动画可以配置速度和回调

5.UINameTable功能,预制体挂载脚本并赋值后,可以直接在代码上获取游戏物体
	即获取节点时不需要GameObject.Find()来查找,
	直接输入对应的游戏对象的名字直接就能获取到节点

13.Unity生命周期映射 自动映射与预制体同名的lua脚本使其拥有Unity的生命周期函数 Start Update Awake OnDisable... 被销毁时自动释放引用

3.UI窗体之间数据传递功能,降低不同窗体数据传输的耦合性 需要注册和注销事件已经发送事件,即可达到不同窗体消息传递功能 与socket通讯时差不多。但是这个要简单些

4.提示框已经横幅滚动通知功能 可以实现一个提示文本,位置,速度,已经点击事件都可配置 可以一次性实现多个文本提示,如打怪装备获取多个,可一同显示 滚动公告,配置播放次数和速度,以及位置

5.Debug功能,手机端最好的查看日志调试工具 使用GUI实现,鼠标右键或者5个手指头同时点击屏幕出现/关闭 捕获日志,即使其他地方报错了,debugger功能也能捕获到异常 添加调试功能,打印缓存,即使了解内存都用了哪些 重启游戏,假重启,释放虚拟机和引用,重新加载开始场景,决绝重启游戏因为编译导致速度慢的问题

6.声音播放管理器 区分背景音乐,游戏音效,按钮点击音效播放器 切换背景音乐功能 每个管理器单独设置音量大小

7.红点系统 邮件,消息,战绩,好友通知 显示小红点功能 界面打开时注册【事件名+ 红点GameObjet】 界面被销毁时注销 收到服务器消息或者特定情境直接触发红点事件即可达到显示红点要求 可实现当子节点有消息需要显示红点时父节点对应的红点也会显示

8.场景,资源加载功能 加载不同场景加载不同模块的资源包即可,退出时可自动释放 加载场景有专门的加载进度和界面,异步加载 加载时可播放滚动通知栏 加载ab资源时,会先递归加载当前ab包的所有依赖资源,然后在卸载时如果被其他包依赖就不会卸载,直到所有依赖都没了后才卸载资源, 你也可以在debug功能中查看所有的依赖关系

9.Lua框架,管理Lua虚拟机和lua代码加载资源释放问题 自定义lua代码加载路径 ...核心框架

11.资源加载方式(更利于程序员满足不同需求的开发) 1.在编辑器时可以直接加载本地资源和lua代码 2.在编辑器时可以加载ab包资源与本地lua代码 3.在编辑器时可以加载ab包资源与下载的lua代码 4.可以选择是否开启热更功能

12.公告功能 在玩家更新资源的时候就能够获取到公告信息。准确说的:只要下载地址正确,最先获取的就是公告信息 如果游戏出现了问题,可以在第一时间修改公告。 这样玩家就知道出现了什么问题。 公告可以配置开始显示的时候,结束显示的时间,这样就不用运营守着时间来换公告信息(当然这个我只写了接口,功能实现很简单)

XLua HotUpdate描述文档 最新描述文档

包含功能:

1.Assetbundle框架
2.UI框架
3.热更功能
4.UI窗体数据传输
5.红点系统
6.热修复功能
7.公告
8.资源加载方式,编辑器与移动设备加载机制
9.Lua框架
10.音频管理
11.移动设备Debug功能
12.提示和滚动通知功能
13.Unity生命周期映射
14.UINameTable,获取节点不用在GameObject.Find();
15.基于DoTween开发的动画组件
...

打包操作(发布到 iOS Android):

1.清理XLua生成的代码,然后重新生成(如果没有修改C#代码就不用操作这一步,但是第一次打包必须操作) XLua/Clear Generated Code -->> XLua/Generate Code

2.注入Hotfix(如果没有修改C#代码就不用操作这一步,但是第一次打包必须操作) 检测热修复的宏定义是否打开【HOTFIX_ENABLE】 如果Hotfix.lua中没有热修复C#的代码可以不启用该功能 Xlua/Hotfix Inject In Editor

3.删除StreamingAsset其他平台的资源,只保留当前需要打包平台的资源(也可以全部要删除)

4.开始Build

资源:

发布工具(在菜单栏中):

Tools/配置项目并发布
	资源版本配置文件:首次生成资源需要先生成资源版本配置文件,
		表示您此次发布的资源是属于哪一个版本的
	选择发布平台资源(Android iOS Windows)
		下方的发布按钮都是一键发布,发布完成后直接将发布目录文件放入服务器即可
	增量更新
		未完成
	更新lua[3,4,5]
		只修改了lua代码发布资源时可以点击这个,发布速度更快
	step5复制到热更目录
		将所有的资源(ab+lua)复制到发布目录
		
资源版本号不同说明:
	你的服务器可以放不同版本的资源
		如:Version-220302151834 Version-220202231835
	你可以直接修改服务器中VersionConfig.json中的的 version 为你想要的版本号
	修改后游戏更新时则会以version中的版本来读取资源
		便于热更出错后回退版本

公告信息配置(在菜单栏中): Tools/配置公告信息 配置的公告信息会在游戏加载界面的公告显示出来 生成公告信息后会出现在项目发布目录中,直接复制到服务器热更资源的根目录即可 --与VersionConfig.json同级

一、Assetbundle(ab) 1.设置标签 2.构建ab包 3.复制lua代码到放置构建ab放置的位置 4.创建校验文件:lua+ab 5.复制到发布目录 二、下载 1.将(一、5 发布目录中的资源全部上传到服务器热更目录就行) 2.修改热更地址 【HotUpdateManager._ServerAddress】 3.启动app将会自动更新 4.如果是首次运行,会将放在StreamingAssets中对应平台的文件拷贝到持久化路径 5.如果拷贝的资源与服务器的资源一致则不会下载任何东西,否则下载本地没有和差异文件 6.更新完游戏正式开始。入口方法【GameInit.DirectlyStartGame】

使用: Hotfix修复 在Assets/Scripts/Lua/src/Hotfix.lua 脚本中可以进行热修复C#代码 加载公共资源方法(不需要手动添加,所有的Common模块下的资源在GameInit中会默认加载) AssetBundleManager.Instance.LoadAllCommonBundle(() => { //回调方法 });

(下面的方法一般在lua中使用)

自定义加载资源包(List集合)
	CS.ABFramework.AssetBundleManager.Instance:LoadBundleByList({"Login/Prefabs", "Login/UI"}, function() --回调 end)

加载场景(场景相对路径,回调,是否卸载之前场景资源,需要加载的模块)
	CS.LoadSceneManager.Instance:Load("Hall/Hall", function() self:Init() end, true, "Hall")
	
    滚动通知(有其他参数可配置,位置可变,次数可变...)
	CS.UIFramework.TipsManager.Instance:ShowRollNotice("今天星期三三了天星期22222222的速度!")

单个提示框(提示框可点击)
	CS.UIFramework.TipsManager.Instance:ShowTips("今天星期三了!", function(go) print("点击事件" .. go.name) end, true, -100, 500)

    多条提示框(提示框可点击)
	CS.UIFramework.TipsManager.Instance:ShowTipsByArray({"屠龙刀 ¥999", "倚天剑 ¥888", "一阳指 ¥998", "九阳神功 ¥1100", "移花接木 ¥2500"}, function(go) print("点击事件" .. go.name) end)


self.form是【BaseUIView】组件的引用
UI窗体接收消息(msg可以为任意数据,sender 为发送者的窗体名称)
    self.form:OnRecivedUIMsg("Shake", function(msg, sender)
		-- print(msg, sender)
		CTRL.doShake()
	end)	
	
UI窗体发送消息
	self.form:SendUIMssage("Login", "大家好,我是消息管理器发来的消息!")

::其他的就不一一列举了。。。毕竟我很懒 ::苹果手机没测试...没钱买Mac,所以打不了包??

木兰宽松许可证, 第2版 木兰宽松许可证, 第2版 2020年1月 http://license.coscl.org.cn/MulanPSL2 您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第2版(“本许可证”)的如下条款的约束: 0. 定义 “软件”是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。 “贡献”是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。 “贡献者”是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。 “法人实体”是指提交贡献的机构及其“关联实体”。 “关联实体”是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。 1. 授予版权许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。 2. 授予专利许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。 3. 无商标许可 “本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用除外。 4. 分发限制 您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。 5. 免责声明与责任限制 “软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。 6. 语言 “本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。 条款结束 如何将木兰宽松许可证,第2版,应用到您的软件 如果您希望将木兰宽松许可证,第2版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步: 1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字; 2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中; 3, 请将如下声明文本放入每个源文件的头部注释中。 Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details. Mulan Permissive Software License,Version 2 Mulan Permissive Software License,Version 2 (Mulan PSL v2) January 2020 http://license.coscl.org.cn/MulanPSL2 Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions: 0. Definition Software means the program and related documents which are licensed under this License and comprise all Contribution(s). Contribution means the copyrightable work licensed by a particular Contributor under this License. Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License. Legal Entity means the entity making a Contribution and all its Affiliates. Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, ‘control’ means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity. 1. Grant of Copyright License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not. 2. Grant of Patent License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken. 3. No Trademark License No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in Section 4. 4. Distribution Restriction You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software. 5. Disclaimer of Warranty and Limitation of Liability THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW IT’S CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 6. Language THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL. END OF THE TERMS AND CONDITIONS How to Apply the Mulan Permissive Software License,Version 2 (Mulan PSL v2) to Your Software To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps: i Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner; ii Create a file named “LICENSE” which contains the whole context of this License in the first directory of your software package; iii Attach the statement to the appropriate annotated syntax at the beginning of each source file. Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details.

简介

提示:老代码,已经停止维护 2023/05/15 因为是我初期写的脚本,很多地方不完善和代码使用不合理 Unity XLua 热更新框架 标签:Unity热更新 xlua热更新 热更新框架 免费学习 但请不要商用,商用请联系! 可提供技术支持! 谢谢支持! 博客地址:http://idkji.com/ 简单使用流程:http://idkji.com/article/detials/202 展开 收起
C# 等 4 种语言
MulanPSL-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C#
1
https://gitee.com/shamvshuo/unity-xLua-hotupdate.git
git@gitee.com:shamvshuo/unity-xLua-hotupdate.git
shamvshuo
unity-xLua-hotupdate
Unity-XLua-Hotupdate
master

搜索帮助