文章目录
- [1. 前言](#1. 前言)
- [2 AB包理论基础](#2 AB包理论基础)
-
- [2.1 生成AB包](#2.1 生成AB包)
- [2.2 AB包资源加载](#2.2 AB包资源加载)
-
- [2.2.1 同步加载](#2.2.1 同步加载)
- [2.2.2 异步加载](#2.2.2 异步加载)
- [2.3 AB包依赖](#2.3 AB包依赖)
-
- [2.3.1 主包](#2.3.1 主包)
- [2.4 AB包资源管理器(同步加载)](#2.4 AB包资源管理器(同步加载))
-
- [2.4.1 加载AB包](#2.4.1 加载AB包)
- [2.4.2 加载资源(不指定类型)](#2.4.2 加载资源(不指定类型))
- [2.4.3 资源加载(指定类型)](#2.4.3 资源加载(指定类型))
- [2.4.4 卸载包](#2.4.4 卸载包)
- [2.5 AB包资源管理器(异步加载)](#2.5 AB包资源管理器(异步加载))
- [3 Lua](#3 Lua)
-
- [3.1 环境搭建](#3.1 环境搭建)
- [3.2 LUA脚本和语法](#3.2 LUA脚本和语法)
-
- [3.2.1 打印和注释](#3.2.1 打印和注释)
- [3.2.2 简单变量类型](#3.2.2 简单变量类型)
- [3.2.3 字符串操作](#3.2.3 字符串操作)
- [3.2.4 运算符(没有复合运算!)](#3.2.4 运算符(没有复合运算!))
- [3.2.5 条件分支语句](#3.2.5 条件分支语句)
- [3.2.6 循环语句](#3.2.6 循环语句)
- [3.2.7 函数(变长,嵌套闭包,多返回值)](#3.2.7 函数(变长,嵌套闭包,多返回值))
- [3.2.8 table表实现数组](#3.2.8 table表实现数组)
- [3.2.9 迭代器遍历(ipairs和pairs区别)](#3.2.9 迭代器遍历(ipairs和pairs区别))
- [3.2.10 table表实现字典](#3.2.10 table表实现字典)
- [3.2.11 table表实现类(点和冒号的区别,self)](#3.2.11 table表实现类(点和冒号的区别,self))
- [3.2.12 table表的公共操作(插入,移除,排序,拼接)](#3.2.12 table表的公共操作(插入,移除,排序,拼接))
- [3.2.13 多脚本执行(require,package,_G)](#3.2.13 多脚本执行(require,package,_G))
- [3.2.14 特殊用法(多变量赋值,三目运算符)](#3.2.14 特殊用法(多变量赋值,三目运算符))
- [3.2.15 协同程序](#3.2.15 协同程序)
- [3.2.16 元表(__index,tostring,newindex)](#3.2.16 元表(__index,tostring,newindex))
- [3.2.17 Lua面向对象之封装](#3.2.17 Lua面向对象之封装)
- [3.2.18 Lua面向对象之继承](#3.2.18 Lua面向对象之继承)
- [3.2.19 Lua面向对象之多态](#3.2.19 Lua面向对象之多态)
- [3.2.20 面向对象总结](#3.2.20 面向对象总结)
- [3.2.21 自带库](#3.2.21 自带库)
- [3.2.22 垃圾回收](#3.2.22 垃圾回收)
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 面向对象总结
lua
--面向对象实现
--万物之父 所有对象的基类 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 垃圾回收