您当前的位置: 首页 >  unity

野奔在山外的猫

暂无认证

  • 2浏览

    0关注

    85博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Unity】Lua热更新 笔记 (一)

野奔在山外的猫 发布时间:2021-04-20 19:55:22 ,浏览量:2

热更新 前言

  这是个人学习笔记,仅供参考。

一、认识更新方式 描述适用于原因传统重新下载最新游戏客户端包体PC耗电大、耗时长现在热更新PC/Andriod/ios耗时短,适用于手机端 二、什么是热更新

答:  (1)游戏上线后,在运营过过程中,如果需要更换UI显示,或者修改游戏的逻辑行为。传统的更新模式下,需要重新打包游戏,让玩家重新下载包体,造成用户体验不佳的情况。  (2)热更新允许在不重新下载游戏客户端的情况下,更新游戏内容。

三、如何使用更新

答:两种更新方式混合使用。

四、如何热更新 4.1 认识AssetBundle

  Unity提供的一种资源更新技术,通过使用AssetBundle更新资源,也可以通过把脚本或者其他代码作为资源(可理解所有游戏资源)打包成AssetBundle然后更新到客户端。

4.2 C#脚本能不能直接更新

  C#运行之前需要先编译,编译过程无法在手机上完成。当我们的游戏逻辑更改时,即C#代码内容发生改变时,需要重新发布新版本。这对于手游来说是体验欠佳的。

  C#的编译流程:写好的代码->编译成.dll扩展程序(UnityEditor完成)->运行于Unity

4.3 热更新有哪些实现方式

   - 使用 Lua 脚本编写游戏的 UI 或者 其他逻辑 (调用C#中的方法进行)    - 使用 C#Light 【方案不成熟、效率低】

4.4 如何使用Lua进行热更新

  在移动端中编写Lua解析器,通过解析器运行最新的Lua脚本,然后开发人员将控制游戏逻辑的代码写成Lua脚本。

  Lua的解析   - uLua   - Nlua   - UniLua   - sLua    xLus = sLua + 代码注入补丁 + 完善工具链 + 腾讯【关注】

4.5 学习热更新路线

   - Lua编程    - LuaInterface和luanet进行Lua和C#的交互通信    - 学习使用AssetBundle进行资源更新    - 学习uLua LuaFramework

五、Lua语言 5.1 认识Lua
  • Lua是一个小巧的脚本语言,由标准C编写而成,在所有操作系统和平台上均可以编译与运行。
  • Lua没有提供强大的库。
  • Lua有一个同时进行的JIT项目,提供在特定平台上的及时编译功能。
5.2 下载Lua

  官方下载地址:Lua官网   GitHub下载地址:Lua for Windows

5.3 Lua文本格式

  后缀名严格要求:.type.lua

5.4 关键字 12345678910andbreakdoelseelseifendfalseforfunctionifinlocalnilnotorrepeatreturnthentrueuntil

  其中nil=C#中的null

5.5 行注释

单行注释:–

--这是一个注释演示

多行注释:–[[ --]]

--[[
这是第一行注释
这是第二行注释
这是第三行注释
--]]

  PS:快捷 使用/取消 注释:Ctrl+Q

5.6 数据类型

  Lua是动态类型语言,变量不需要类型定义。

数据类型描述nil无效值,形同于C#中的null(在条件表达式中相当于false)boolean包含两个值:true 和 false(只有false和nil为假,其余均为真)number表示双精度类型的实浮点数string字符串,由一对双引号或单引号来表示(不可修改)function由C或Lua编写的函数userdata便是任意存储在变量中的C数据结构thread表示执行的独立线路,用于执行协同程序(协程)tableLua中的表(table)其实是一个"关联数组",数组的索引可以是数字或字符串,在Lua中,table的创建是通过"构造表达式"来完成,最简单构造表达式“{}”,用来创建一个空表 5.6.1 字符串替换

  Lua中的string不可以修改。

--string
a = "one string"
--gsub() 替换字符串,将对象a中的one替换为another
b = string.gsub(a, "one", "another")
5.6.2 连接字符串
-- ".." 相当于C语言中的"+"
c = a .. "," .. b 
5.6.3 C#与Lua的加法

  C#中 "10" + 2的结果为102,即转换为字符串相加。   Lua中"10" + 2的结果为12,即转换为number。

print(10 + 2)
print("10" + 2)
5.6.4 ==比较
print(10 == "10") --false
print(tostring(10) == "10") --true
print(10 .. "" == "10") --true

  注意:Lua中..写在number后,需要加空格告诉Lua这是一个连接字符串。

5.6.5 条件判断语句
if exp then
	block
elseif exp then 
	block
else
	block
End

exp:判断条件 block:内容

  Lua认为false、nil为假;true/非nil为真。特别注意的是Lua中的0为true。

练习:判断年份是闰年或平年 提示:~=:不等于 not:非 and:和 or:或

year = 2020
if (year % 4 == 0 and year % 100 ~=0) or year % 400 = 0 then
	print(year .. "是闰年")
else
	print(year .. "是平年")
end
5.6.6 For循环语句

  Lua没有switch-case语句

--for
for i=1, 10, 1 do
	pirnt(i)
end

for i=10, 1, -1 do
	pirnt(i)
end

  注意:Lua中的for循环包含10

练习:输出矩阵{[1,2,3,4,5],[2,4,6,8,10],[3,6,9,12,15],[4,8,12,16,20]}

str = ""
for j=1, 4, 1 do
	for i=1, 5, 1 do
		str = str .. i*j .. " "
	end
end
print(str)
5.6.7 While循环语句
--while
a = 1
while(a             
关注
打赏
1659777066
查看更多评论
0.0512s