Unity Xlua热更新技术学习指南

news2024/12/24 8:40:10

热更新是商业网络游戏必不可少的一项技术,而基于lua的热更新技术又是Unity商业网游项目中的一个主流选择。

部分同学近期表示自己在面试中被面试官提问热更新相关知识,但由于对热更新能力有所缺失,最后遗憾的与心仪工作失之交臂。

由此可见,还是有一部分同学不了解热更新技术的重要性,甚至对热更新技术一无所知,本篇文章我们就来对热更新技术及它的学习方法做一个讲解。

图片

很多公司在招聘的时候会明确应聘者需要有lua的开发经验,并熟悉热更新的框架与相关技术。但是通过官方教程或者一些视频教程来学习Unity开发的同学会发现,这些教程中基本涉及不到热更新技术这一领域,更不会用lua脚本来开发Unity游戏。

缺乏热更新技术能力就成为了部分开发者的痛点,因此与心仪的Offer擦肩而过。

由此可见,学会热更新技术,掌握使用lua框架下的Unity基本业务模块开发,无论对于入行求职还是对于工作,都是十分重要的。

图片

对于热更新的学习,很多同学无从下手,市面上有很多可以选择的插件xlua、ulua、tolua、slua,可仅学习插件是远远不够的,离真正的商业化热更新项目开发还有不小的距离。

更有一些同学,还不了解热更新是什么,更不知道热更新对于游戏开发者的重要性,这必然会对后续进阶造成一定的困扰。

为了让更多游戏开发者了解并学习到lua热更新技术。我列出了以下的学习进阶过程:

1、了解什么是热更新?
2、了解lua插件和lua热更新框架的区别? 
 

3、上手搭建一个最简单的热更新框架,实现功能开发与资源打包?

01 什么是热更新?

一款游戏在上架的时候,我们会打一个游戏的安装包出来,将其上传到应用对应的平台市场。游戏通过审核之后,玩家从市场里下载游戏到客户端,然后安装,最后就可以玩到游戏的内容。

如果后续游戏有更新,普通更新会由游戏的开发商重新打一个游戏的安装包,然后重复上述过程,而玩家也需要重新下载完整的安装包,并且重新安装来替换之前的游戏。才能完成整个更新过程.。

图片

而热更新,则指的是开发商这边不需要重新打一个完整的安装包,而是仅仅把本次的更新部分的文件打成资源包,上传到资源服务器,而玩家也仅需要下载这部分资源包,游戏下载之后再进行对应的加载,实现更新的过程。

比如我们经常玩的王者、吃鸡、原神等游戏,每到赛季末或有新皮肤时,就会采取热更新的方式将数据传输给我们,做到在线更新游戏或版本。

图片

02 Lua插件是什么?

为了实现热更新,需要从项目立项初期就要确定热更新方案与技术选型,目前主流的选择是采用lua方案,而一些团队和厂商已经为Unity提供了专门的lua热更新插件,用以解决lua虚拟机启动, lua与C#脚本交互等一些基本能力,目前主流的插件有xlua,ulua等。

03 Lua框架是什么?

插件仅仅解决了基本问题,但是要开发一个商业游戏,需要比较完善的框架,才能支撑起一个大型多人项目的顺利开发以及上线维护的过程,,由于lua热更新体系的特殊性,就对框架有了更多的要求。

商业化游戏的公司,一般都会有一套比较完善的热更新框架,而掌握在框架下开发lua模块,对于想入行的同学来说比较重要,而对于想成为游戏主程序或者架构师的同学,具备框架搭建能力,掌握热更新框架的功能,设计以及亲手搭建框架的经验等,则更加重要了。

04 如何制作一个基本的热更新框架?

1. 首先要合理的划分项目的文件结构,对于资源的加载方式与存储位置都需要经过一定的思考与设计,并且要区分编辑器开发和上线后的两种不同状态对于资源加载的不同要求。

图片

图片

2. 选择合适的插件,定制一套C#与Lua端的交互规则,划分好C#与lua各自的工作部分。

3.针对功能模块管理,Net模块管理,主数据模块管理,配置文件管理,事件管理等重要模块做好架构划分,制定各自的模块功能需求,并实现各自的功能。

图片

4. 指定资源打包策略,并指定资源更新机制,完成资源热更新流程。

图片

这些是关于热更新的一些基础知识,希望能让在做游戏开发的小伙伴意识到它的重要性,从而加深对热更新的学习。

·END·

扫描二维码

⬇️

添加助教老师

⬇️

免费领取游戏策划4天训练营!

⬇️


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1513073.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++第三弹---C++入门(下)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 C入门 1、内联函数 1.1、概念 1.2、特性 2、auto关键字(C11) 2.1、类型别名思考 2.2、auto简介 2.3、auto的使用细则 2.3、auto不能推导的场景 …

3.自定义工程目录配置CMakeLists

问题背景 熟悉stm32keil开发的都知道,我们在编写不同的外设时,通常都会单独编写一个app文件夹或者是user文件夹之类的来存放不同外设功能的源文件和头文件。 在前面一节2.构建第一个工程并烧录到ESP32开发板-CSDN博客中,我们是使用了一个乐鑫…

数据管道架构设计一览

数据管道架构设计一览 今天来聊聊数据管道。 数据管道是现代系统中有效管理和处理数据的基本组成部分。 这些管道通常包括 5 个主要阶段: 收集(Collect)摄取(Ingest)存储(Store)计算&#x…

OpenCV(七)——灰度图像的阙值处理以及图像的边界填充

灰度图像的阙值处理 在OpenCV中利用threshold()对灰度图像进行阙值处理,该函数通过将图像中的每个像素值与一个给定的阈值进行比较来工作。如果像素值超过这个阈值,那么像素值将被设置成指定的最大值;如果没有超过阈值,则根据不同…

【干货】【常用电子元器件介绍】【晶体三极管】(二)--晶体三极管的应用

声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。 一、 三极管电路的链接形式 三极管(transistor)是近代电子电路的核心组件。其 主要功能是做电流的开关,就如同控制水管中水流量的阀 (valve)。三极管工作情况模拟示意图如下图所示。   …

企业网站为什么要用OV级别的SSL证书?

部署OV SSL证书的网站,可在SSL证书详情中查看网站所属企业名称,可以让用户有效区分出钓鱼网站,鉴别网站的真实身份。企业网站为啥要选OV(组织验证)SSL证书呢?主要有这么几个原因: 1.安全等级更高…

uiCA模拟器和bHive benchmark的使用

概念 uiCA 基本块吞吐量预测器 github地址:GitHub - andreas-abel/uiCA: uops.info Code Analyzer uiCA是一个模拟器,可以预测基本块在最新的英特尔微体系结构上的吞吐量。除此之外,它还提供了代码执行的洞察。 uiCA基于来自uops.info的数…

SpringCloud Hystrix 断路器

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅,从传统的模块之间调用,一步步的升级为 SpringCloud 模块之间的调用,此篇文章为第五篇,即介绍 Hystrix 断路器。 二、概述 2.1 分布式系统面临的问题 复杂分布式体系结构中…

深入探究Java中的TransferQueue:机制、特性与应用场景

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! TransferQueue是Java并发包中的一个强大工具,专为需要精确的数据传递场景而设计。它实现了BlockingQueue接口&#xf…

Midjourney绘图欣赏系列(十)

Midjourney介绍 Midjourney 是生成式人工智能的一个很好的例子,它根据文本提示创建图像。它与 Dall-E 和 Stable Diffusion 一起成为最流行的 AI 艺术创作工具之一。与竞争对手不同,Midjourney 是自筹资金且闭源的,因此确切了解其幕后内容尚不…

快速构建Vue2/Vue3项目

1.创建一个空文件夹 我创建了一个vue的空文件夹 2.使用vscode打开 3.终端输入npm init -y npm init -y 含义是项目初始化 运行后会出现一个文件:package.json 在运行第四步前,我的项目出现的问题!!! 就是我的文件…

Go——运算符,变量和常量,基本类型

一.运算符 Go语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 1.1 算术运算符 注意:(自增)和--(自减)在go语言中是单独的语句,并不是运算符。 1.2 关系运算符 1.3 逻辑运算符 1.4 位运算符 位运算符对整数在内存…

【每日八股】Java基础经典面试题2

前言:哈喽大家好,我是黑洞晓威,25届毕业生,正在为即将到来的秋招做准备。本篇将记录学习过程中经常出现的知识点以及自己学习薄弱的地方进行总结🥰。 本篇文章记录的Java基础面试题,适合在学Java基础的小白…

给多篇文章注音 只要拼音不要汉字 怎么办?快看过来 小编帮你解决

在日常办公和学习中,我们有时需要对Word文档中的文字进行拼音标注,特别是当我们需要教授儿童识字或者制作一些特殊的文档时。然而,很多时候,我们可能只需要拼音而不需要汉字本身。那么,如何在Word中给文字注音&#xf…

【你也能从零基础学会网站开发】Web建站之javascript入门篇 认识Document文档对象

🚀 个人主页 极客小俊 ✍🏻 作者简介:程序猿、设计师、技术分享 🐋 希望大家多多支持, 我们一起学习和进步! 🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注 Document对象 …

Rust异步编程 Async Await 入门

Rust Async Await 入门 在本文中,我们将仔细研究 Rust 中的异步编程。到目前为止,我对 Rust 异步的体验主要是从 Stack Overflow 复制代码。本文旨在帮助您了解什么是异步代码以及如何有效地使用它。 什么是异步代码? 要了解什么是异步代码…

openGauss使用BenchmarkSQL进行性能测试(上)

一、前言 本文提供openGauss使用BenchmarkSQL进行性能测试的方法和测试数据报告。 BenchmarkSQL,一个JDBC基准测试工具,内嵌了TPC-C测试脚本,支持很多数据库,如PostgreSQL、Oracle和Mysql等。 TPC-C是专门针对联机交易处理系统…

金融知识分享系列之:MACD指标精讲

金融知识分享系列之:MACD指标精讲 一、MACD指标二、指标原理三、MACD指标参考用法四、MACD计算步骤五、MACD分析要素六、根据快线DIF位置判断趋势七、金叉死叉作为多空信号八、快线位置交叉信号九、指标背离判断行情反转十、差离值的正负十一、差离值的变化十二、指…

K 近邻算法

为什么学习KNN算法 KNN是监督学习分类算法,主要解决现实生活中分类问题。 (1)首先准备数据,可以是视频、音频、文本、图片等等 (2)抽取所需要的一些列特征,形成特征向量 (3&…

iPhone, Android 手机是如何收到推送通知的?

本文转自 公众号 ByteByteGo,如有侵权,请联系,立即删除 iPhone, Android 手机是如何收到推送通知的? 我们的手机或电脑是如何收到推送通知的? 通常我们可以使用消息解决方案 Firebase 来支持通知推送。下图显示了 Fi…