Unity3D学习之Lua热更新解决方案(一)AB包和LUA语法


1. 前言

在这里插入图片描述

2 AB包理论基础

AssetBundle
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.1 生成AB包

AssetBundles-Browser-master
关于AB包打包和加载 ,高版本的将使用最新的Addressables进行
这里使用AssetBundles-Browser-master
在这里插入图片描述
在这里插入图片描述

2.2 AB包资源加载

2.2.1 同步加载

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2.2 异步加载

使用协程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 AB包依赖

在包中的资源如果使用了另一个资源,打包会默认打包到同一个AB包
如果在AB中使用了另一个AB包中的资源,会出现丢失。需要把依赖包都加载才能正常允许。
在这里插入图片描述

2.3.1 主包

可以通过主包获取依赖信息
在这里插入图片描述
在这里插入图片描述

2.4 AB包资源管理器(同步加载)

在这里插入图片描述

2.4.1 加载AB包

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4.2 加载资源(不指定类型)

在这里插入图片描述

在这里插入图片描述
泛型加载
在这里插入图片描述

2.4.3 资源加载(指定类型)

在这里插入图片描述

2.4.4 卸载包

在这里插入图片描述
在这里插入图片描述

2.5 AB包资源管理器(异步加载)

在这里插入图片描述
在这里插入图片描述

泛型
在这里插入图片描述

3 Lua

3.1 环境搭建

在这里插入图片描述
判断是否
在这里插入图片描述
在这里插入图片描述

3.2 LUA脚本和语法

在这里插入图片描述

3.2.1 打印和注释

打印
print(“”)
在这里插入图片描述
在这里插入图片描述

注释
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.2.2 简单变量类型

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
type()可以获取变量类型

在这里插入图片描述

3.2.3 字符串操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2.4 运算符(没有复合运算!)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2.5 条件分支语句

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

LUA中没有switch

3.2.6 循环语句

在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2.7 函数(变长,嵌套闭包,多返回值)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
多返回值时,在前面申明多个变量来接取即可
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
闭包:改变参数的生命周期

在这里插入图片描述
在这里插入图片描述

3.2.8 table表实现数组

在这里插入图片描述

Lua中索引从1开始
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2.9 迭代器遍历(ipairs和pairs区别)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2.10 table表实现字典

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.2.11 table表实现类(点和冒号的区别,self)

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
访问类中成员变量

在这里插入图片描述
在这里插入图片描述
LUA提供了语法糖方便访问成员变量
用冒号:默认把调用者作为第一个参数传入函数
在这里插入图片描述
在函数声明的时候可以使用冒号,意思是函数会有一个默认的参数
LUA有一个默认值self,表示默认传入的第一个参数

在这里插入图片描述
在这里插入图片描述
这两句的效果是一样的
在这里插入图片描述

3.2.12 table表的公共操作(插入,移除,排序,拼接)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2.13 多脚本执行(require,package,_G)

在这里插入图片描述

加了local就是局部变量(本地变量)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

可以在脚本中return
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2.14 特殊用法(多变量赋值,三目运算符)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2.15 协同程序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2.16 元表(__index,tostring,newindex)

在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一层一层往上套
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2.17 Lua面向对象之封装

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2.18 Lua面向对象之继承

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2.19 Lua面向对象之多态

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
装父类的base
在这里插入图片描述
调用父类方法
在这里插入图片描述
这样调用base时用的是同一个父类
在这里插入图片描述
在这里插入图片描述
手动调用self,这样base就不会是同一个
在这里插入图片描述
在这里插入图片描述

3.2.20 面向对象总结

--面向对象实现 
--万物之父 所有对象的基类 Object
--封装
Object = {}
--实例化方法
function Object:new()
	local obj = {}
	--给空对象设置元表 以及 __index
	self.__index = self
	setmetatable(obj, self)
	return obj
end
--继承
function Object:subClass(className)
	--根据名字生成一张表 就是一个类
	_G[className] = {}
	local obj = _G[className]
	--设置自己的“父类”
	obj.base = self
	--给子类设置元表 以及 __index
	self.__index = self
	setmetatable(obj, self)
end

--申明一个新的类
Object:subClass("GameObject")
--成员变量
GameObject.posX = 0
GameObject.posY = 0
--成员方法
function GameObject:Move()
	self.posX = self.posX + 1
	self.posY = self.posY + 1
end

--实例化对象使用
local obj = GameObject:new()
print(obj.posX)
obj:Move()
print(obj.posX)

local obj2 = GameObject:new()
print(obj2.posX)
obj2:Move()
print(obj2.posX)

--申明一个新的类 Player 继承 GameObject
GameObject:subClass("Player")
--多态 重写了 GameObject的Move方法
function Player:Move()
	--base调用父类方法 用.自己传第一个参数
	self.base.Move(self)
end
print("****")
--实例化Player对象
local p1 = Player:new()
print(p1.posX)
p1:Move()
print(p1.posX)

local p2 = Player:new()
print(p2.posX)
p2:Move()
print(p2.posX)

3.2.21 自带库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2.22 垃圾回收

在这里插入图片描述
在这里插入图片描述

  • 19
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值