码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Unity3D学习之Lua热更新解决方案(一)AB包和LUA语法


    文章目录

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

    --面向对象实现 
    --万物之父 所有对象的基类 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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64

    3.2.21 自带库

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

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

    3.2.22 垃圾回收

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

  • 相关阅读:
    [山东科技大学OJ]1226 Problem B: 寻求勾股数
    Redis官方开源的可视化管理工具 - RedisInsight
    LeetCode 每日一题——1403. 非递增顺序的最小子序列
    2022/8/5 uniapp实现附近商家定位
    java正则表达式进阶
    docker制作springboot镜像
    【MAPBOX基础功能】08、mapbox绘制点图层并进行添加、删除、更新、显隐等操作
    springboot项目下logback配置
    MyBatis映射文件深入
    信息检索与智能问答
  • 原文地址:https://blog.csdn.net/Lmz_0314/article/details/136163778
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号