这是个人学习笔记,仅供参考。
一、认识更新方式 描述适用于原因传统重新下载最新游戏客户端包体PC耗电大、耗时长现在热更新PC/Andriod/ios耗时短,适用于手机端 二、什么是热更新答: (1)游戏上线后,在运营过过程中,如果需要更换UI显示,或者修改游戏的逻辑行为。传统的更新模式下,需要重新打包游戏,让玩家重新下载包体,造成用户体验不佳的情况。 (2)热更新允许在不重新下载游戏客户端的情况下,更新游戏内容。
三、如何使用更新答:两种更新方式混合使用。
四、如何热更新 4.1 认识AssetBundleUnity提供的一种资源更新技术,通过使用AssetBundle更新资源,也可以通过把脚本或者其他代码作为资源(可理解所有游戏资源)打包成AssetBundle然后更新到客户端。
4.2 C#脚本能不能直接更新C#运行之前需要先编译,编译过程无法在手机上完成。当我们的游戏逻辑更改时,即C#代码内容发生改变时,需要重新发布新版本。这对于手游来说是体验欠佳的。
C#的编译流程:写好的代码->编译成.dll
扩展程序(UnityEditor
完成)->运行于Unity
- 使用 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项目,提供在特定平台上的及时编译功能。
官方下载地址:Lua官网 GitHub下载地址:Lua for Windows
5.3 Lua文本格式 后缀名严格要求:.type.lua
其中nil
=C#中的null
单行注释:–
--这是一个注释演示
多行注释:–[[ --]]
--[[
这是第一行注释
这是第二行注释
这是第三行注释
--]]
PS:快捷 使用/取消 注释:Ctrl+Q
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这是一个连接字符串。
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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?