lua/xlua/ILRuntime
文章平均质量分 60
千喜
90后程序媛,热爱技术热爱分享,专注于客户端开发
展开
-
Lua学习之路(三) ------ Lua数据类型
Lua是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。Lua中有8个基本类型分别为:nil、boolean、number、string、userdata、function、thread和table。数据类型描述nil这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。boolean包含两个值:false和true。n...转载 2018-06-03 19:40:12 · 387 阅读 · 0 评论 -
Lua学习之路(十五) ------ Lua 协同程序(coroutine)
什么是协同(coroutine)?Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。协同是非常强大的功能,但是用起来也很复杂。线程和协同程序区别线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作的运行。在任一指定时刻只有一个协同程序在运行,并且这个正...转载 2018-06-07 15:55:32 · 374 阅读 · 0 评论 -
Lua学习之路(十六) ------ Lua 文件 I/O
Lua I/O 库用于读取和处理文件。分为简单模式(和C一样)、完全模式。简单模式(simple model)拥有一个当前输入文件和一个当前输出文件,并且提供针对这些文件相关的操作。(io.xxx)完全模式(complete model) 使用外部的文件句柄来实现。它以一种面对对象的形式,将所有的文件操作定义为文件句柄的方法(file:xxx)简单模式在做一些简单的文件操作时较为合适。但是在进行一...转载 2018-06-07 16:27:46 · 436 阅读 · 0 评论 -
Lua学习之路(十七) ------Lua 错误处理/调试
Lua 错误处理程序运行中错误处理是必要的,在我们进行文件操作,数据转移及web service 调用过程中都会出现不可预期的错误。如果不注重错误信息的处理,就会造成信息泄露,程序无法运行等情况。任何程序语言中,都需要错误处理。错误类型有:语法错误运行错误①.语法错误语法错误通常是由于对程序的组件(如运算符、表达式)使用不当引起的。一个简单的实例如下:-- test.lua 文件a == 2以上...转载 2018-06-07 16:44:56 · 1613 阅读 · 0 评论 -
Lua学习之路(十八) ------ Lua 垃圾回收
Lua 采用了自动内存管理。 这意味着你不用操心新创建的对象需要的内存如何分配出来, 也不用考虑在对象不再被使用后怎样释放它们所占用的内存。Lua 运行了一个垃圾收集器来收集所有死对象 (即在 Lua 中不可能再访问到的对象)来完成自动内存管理的工作。 Lua 中所有用到的内存,如:字符串、表、用户数据、函数、线程、 内部结构等,都服从自动管理。Lua 实现了一个增量标记-扫描收集器。 它使用这两...转载 2018-06-07 22:08:54 · 383 阅读 · 0 评论 -
xLua学习之路(五) ------ 热更新API/标签/打包报错的坑
前置步骤请参考:xLua学习之路(一) ------ 学习资料/准备工作限制:不支持静态构造函数。目前只支持Assets下代码的热补丁,不支持引擎,c#系统库的热补丁。API介绍: 1. xlua.hotfix(class, [method_name], fix) : 注入lua补丁 class : C#类,两种表示方法,CS.Namespace.TypeName或者字...原创 2018-06-23 11:07:18 · 4394 阅读 · 0 评论 -
Lua学习之路(十九) ------Lua 面向对象
面向对象特征1) 封装:指能够把一个实体的信息、功能、响应都装入一个单独的对象中的特性。2) 继承:继承的方法允许在不改动原程序的基础上对其进行扩充,这样使得原功能得以保存,而新功能也得以扩展。这有利于减少重复编码,提高软件的开发效率。3) 多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。4)抽象:抽象(Abstra...转载 2018-06-07 23:11:35 · 971 阅读 · 0 评论 -
xLua学习之路(二) ------ 通过xLua 虚拟机运行lua程序(包括lua代码/lua脚本)
首先学习下LuaEnv类(Lua虚拟机,建议全局唯一)object[] DoString(string chunk, string chunkName = "chuck", LuaTable env = null)描述:执行一个代码块。参数:chunk: Lua代码;chunkName: 发生error时的debug显示信息中使用,指明某某代码块的某行错误;env :为这个代码块;返...原创 2018-06-01 12:08:57 · 3177 阅读 · 0 评论 -
xLua学习之路(三) ------ C#主动发起对Lua数据结构的访问(Lua文件保存格式要为UTF-8)
1.访问全局基本数据类型 定义全局变量: 代码: LuaEnv luaEnv = new LuaEnv(); luaEnv.DoString("require 'CSharpCallLua'");// number -- int flo...原创 2018-06-09 11:21:33 · 1709 阅读 · 2 评论 -
xlua开发注意事项(持续更新)
1.当脚本中存在中文的时候要先将脚本用记事本打开,另存为,将编码格式改为UTF-8原创 2018-06-02 10:03:12 · 769 阅读 · 0 评论 -
Lua学习之路(一) ------ 学习资料准备
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua和C#的区别:Lua可以在几乎所有的操作系统和平台进行编译运行 可以很方便的更新代码 更新了代码后,可以直接在手机上运行,不需要重新安装(后续的热更新方案)C#只能在特定的操作系统中进行编译成dll...原创 2018-06-02 10:14:41 · 1291 阅读 · 2 评论 -
Lua学习之路(二) ------ Lua 基本语法
脚本式编程我们可以将 Lua 程序代码保持到一个以 lua 结尾的文件,并执行,该模式称为脚本式编程,如我们将如下代码存储在名为 hello.lua 的脚本文件中:print("Hello World!")print("www.runoob.com")使用 lua 名执行以上脚本,输出结果为:$ lua test.luaHello World!www.runoob.com我们也可以将代码修改为如...转载 2018-06-02 10:25:28 · 594 阅读 · 0 评论 -
xLua学习之路(四) ------ Lua调用C#
1.new C#对象你在C#这样new一个对象: var newGameObj = new UnityEngine.GameObject();对应到Lua是这样: local newGameObj = CS.UnityEngine.GameObject() --新建一个对象基本类似,除了:1、lua里头没有new关键字;2、所有C#相关的都放到CS下,包括构造函数,静态成员属性、方...原创 2018-06-09 14:53:58 · 4461 阅读 · 3 评论 -
ILRuntime热更案例学习(五) ------ 注意事项总结
官方示例下载地址1: https://github.com/Ourpalm/ILRuntime官方示例下载地址2 : https://github.com/Ourpalm/ILRuntimeU3D官方文档地址 : https://ourpalm.github.io/ILRuntime/public/v1/guide/tutorial.html一.iOS IL2CPP打包注意事项1....转载 2018-12-12 14:33:10 · 5044 阅读 · 1 评论 -
ILRuntime热更案例学习(一) ------ 自定义类库/Helloworld案例
官方示例下载地址1: https://github.com/Ourpalm/ILRuntime官方示例下载地址2 : https://github.com/Ourpalm/ILRuntimeU3D官方文档地址 : https://ourpalm.github.io/ILRuntime/public/v1/guide/tutorial.html一.自定义类库1.打开VS,创建新项目,...原创 2018-12-11 16:45:12 · 2882 阅读 · 2 评论 -
ILRuntime热更案例学习(二) ------ Invocation/Delegate/Inheritance/错误提醒
官方示例下载地址1: https://github.com/Ourpalm/ILRuntime官方示例下载地址2 : https://github.com/Ourpalm/ILRuntimeU3D官方文档地址 : https://ourpalm.github.io/ILRuntime/public/v1/guide/tutorial.html一.Invocation案例 void...原创 2018-12-11 18:04:59 · 5638 阅读 · 1 评论 -
ILRuntime热更案例学习(三) ------ Reflection/CLRBinding/CLRRedirection
官方示例下载地址1: https://github.com/Ourpalm/ILRuntime官方示例下载地址2 : https://github.com/Ourpalm/ILRuntimeU3D官方文档地址 : https://ourpalm.github.io/ILRuntime/public/v1/guide/tutorial.html一.Reflectionvoid On...原创 2018-12-12 11:01:32 · 3730 阅读 · 0 评论 -
Lua学习之路(十四) ------ Lua 元表(Metatable扩展普通表的行为)
在 Lua table 中我们可以访问对应的key来得到value值,但是却无法对两个 table 进行操作。因此 Lua 提供了元表(Metatable),允许我们改变table的行为,每个行为关联了对应的元方法。例如,使用元表我们可以定义Lua如何计算两个table的相加操作a+b。当Lua试图对两个表进行相加时,先检查两者之一是否有元表,之后检查是否有一个叫"__add"的字段,若找到,则调...转载 2018-06-07 15:14:09 · 606 阅读 · 0 评论 -
Lua学习之路(十三) ------ Lua 模块(相当于C#中的命名空间)与包
模块类似于一个封装库,从 Lua 5.1 开始,Lua 加入了标准的模块管理机制,可以把一些公用的代码放在一个文件里,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度。Lua 的模块是由变量、函数等已知元素组成的 table,因此创建一个模块很简单,就是创建一个 table,然后把需要导出的常量、函数放入其中,最后返回这个 table 就行。以下为创建自定义模块 module...转载 2018-06-07 13:12:34 · 1738 阅读 · 0 评论 -
AssetBundle学习之路(六) ------ asset bundle浏览器
siki学院学习链接:http://www.sikiedu.com/my/course/74官方介绍地址:https://docs.unity3d.com/Manual/AssetBundles-Browser.htmlGitHub下载链接:https://github.com/Unity-Technologies/AssetBundles-Browser(下载下来就是Editor文件夹,直接导入...原创 2018-05-31 10:13:28 · 1214 阅读 · 0 评论 -
Lua学习之路(四) ------ Lua 变量
变量在使用前,必须在代码中进行声明,即创建该变量。编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值。Lua 变量有三种类型:全局变量、局部变量、表中的域。Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量。局部变量的作用域为从声明位置开始到所在语句块结束。变量的默认值均为 nil。-- test.lua 文件脚本a = 5 ...转载 2018-06-03 19:51:40 · 427 阅读 · 0 评论 -
Lua学习之路(五) ------ Lua 循环
很多情况下我们需要做一些有规律性的重复操作,因此在程序中就需要重复执行某些语句。一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件。循环结构是在一定条件下反复执行某段程序的流程结构,被反复执行的程序被称为循环体。循环语句是由循环体及循环的终止条件两部分组成的。Lua 语言提供了以下几种循环处理方式:循环类型描述while 循环在条件为 true 时,让程序重复地执行某些语句。执行语...转载 2018-06-03 19:58:25 · 596 阅读 · 0 评论 -
Lua学习之路(六) ------ Lua 流程控制(if)
Lua 编程语言流程控制语句通过程序设定一个或多个条件语句来设定。在条件为 true 时执行指定程序代码,在条件为 false 时执行其他指定代码。以下是典型的流程控制流程图: 控制结构的条件表达式结果可以是任何值,Lua认为false和nil为假,true和非nil为真。要注意的是Lua中 0 为 true:--[ 0 为 true ]if(0)then print("0 为 ...转载 2018-06-03 20:02:53 · 5017 阅读 · 0 评论 -
Lua学习之路(七) ------ Lua 函数
在Lua中,函数是对语句和表达式进行抽象的主要方法。既可以用来处理一些特殊的工作,也可以用来计算一些值。Lua 提供了许多的内建函数,你可以很方便的在程序中调用它们,如print()函数可以将传入的参数打印在控制台上。Lua 函数主要有两种用途:1.完成指定的任务,这种情况下函数作为调用语句使用;2.计算并返回值,这种情况下函数作为赋值语句的表达式使用。函数定义Lua 编程语言函数定义格式如下:e...转载 2018-06-03 20:23:27 · 310 阅读 · 0 评论 -
Lua学习之路(八) ------ Lua 运算符
运算符是一个特殊的符号,用于告诉解释器执行特定的数学或逻辑运算。Lua提供了以下几种运算符类型:算术运算符关系运算符逻辑运算符其他运算符算术运算符下表列出了 Lua 语言中的常用算术运算符,设定 A 的值为10,B 的值为 20:操作符描述实例+加法A + B 输出结果 30-减法A - B 输出结果 -10*乘法A * B 输出结果 200/除法B / A w输出结果 2%取余B % A 输出结...转载 2018-06-03 20:31:22 · 210 阅读 · 0 评论 -
Lua学习之路(九) ------ Lua 字符串+转义字符
字符串或串(String)是由数字、字母、下划线组成的一串字符。Lua 语言中字符串可以使用以下三种方式来表示:单引号间的一串字符。双引号间的一串字符。[[和]]间的一串字符。以上三种方式的字符串实例如下:string1 = "Lua"print("\"字符串 1 是\"",string1)string2 = 'runoob.com'print("字符串 2 是",string2)string3 ...转载 2018-06-03 20:52:32 · 31205 阅读 · 5 评论 -
Lua学习之路(十) ------ Lua 数组
数组,就是相同数据类型的元素按一定顺序排列的集合,可以是一维数组和多维数组。Lua 数组的索引键值可以使用整数表示,数组的大小不是固定的。一维数组一维数组是最简单的数组,其逻辑结构是线性表。一维数组可以用for循环出数组中的元素,如下实例:array = {"Lua", "Tutorial"}for i= 0, 2 do print(array[i])end以上代码执行输出结果为:ni...转载 2018-06-03 21:05:15 · 989 阅读 · 0 评论 -
Lua学习之路(十一) ------ Lua 迭代器
迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址在Lua中迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素。泛型 for 迭代器泛型 for 在自己内部保存迭代函数,实际上它保存三个值:迭代函数、状态常量、控制变量。泛型 for 迭代器提供了集合的 key/value 对,语法格式如下:for k, v(变量列表)...转载 2018-06-03 21:12:54 · 354 阅读 · 0 评论 -
lua学习之路(一)------ 学习路径
链接:菜鸟教程:https://www.runoob.com/lua/lua-tutorial.htmlsiki老师的lua教程也是根据菜鸟教程来讲的,地址:http://www.sikiedu.com/my/course/75原创 2018-05-28 12:20:03 · 1054 阅读 · 0 评论 -
AssetBundle学习之路(一) ------ 定义/作用/打包流程
aaa原创 2018-05-28 14:37:47 · 2005 阅读 · 0 评论 -
AssetBundle学习之路(二) ------ .manifest解析/读取.manifest依赖
siki学院学习链接:http://www.sikiedu.com/my/course/74一个asset bundle包含以下两部分:原创 2018-05-29 19:16:13 · 8939 阅读 · 3 评论 -
AssetBundle学习之路(四) ------ asset bundle加载及获取里面的资源
siki学院学习链接:http://www.sikiedu.com/my/course/741.总体加载流程 1.2两步是文章所提到过的步骤:AssetBundle学习之路(一) ------ 定义/作用/打包流程 打包之后的asset bundle包一般都是放在服务器端,放在APK中会有两个问题: 增加APK包的大小,影响用...原创 2018-05-30 18:05:34 · 3522 阅读 · 1 评论 -
AssetBundle学习之路(三) ------ asset bundle分组策略/依赖打包/资源重复问题解决方案
siki学院学习链接:http://www.sikiedu.com/my/course/741.制定asset bundle标签时就是在分组,同一个标签就是一组,打包在一个asset bundle中以下分组仅供参考:总结:2.依赖打包siki学院学习链接:http://www.sikiedu.com/my/course/74...原创 2018-05-29 13:37:56 · 6084 阅读 · 0 评论 -
热更新学习之路目录
Lua学习之路: Lua学习之路(一) ------ 学习资料准备Lua学习之路(二) ------ Lua 基本语法Lua学习之路(三) ------ Lua数据类型Lua学习之路(四) ------ Lua 变量Lua学习之路(五) ------ Lua 循环Lua学习之路(六) ------ Lua 流程控制(if)Lua学习之路(七) ------ Lu...原创 2018-05-30 18:50:16 · 2020 阅读 · 0 评论 -
AssetBundle学习之路(五) ------ asset bundle卸载/文件校验
siki学院学习链接:http://www.sikiedu.com/my/course/741.由于下载asset bundle会保存在本地,因此需要卸载官方卸载asset bundle介绍地址:http://www.sikiedu.com/course/74/task/1811/showAssetBundle.Unload(bool)解析:因此调用 AssetBundle.Unload(fals...原创 2018-05-30 18:35:03 · 2081 阅读 · 0 评论 -
xLua学习之路(一) ------ 学习资料/准备工作
学习资料:Unity场景异步加载的进度条制作 :https://blog.csdn.net/sinat_20559947/article/details/50000455Xlua官网:https://github.com/Tencent/xLua使用指南:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/hotfix.md官方F...原创 2018-05-30 22:59:12 · 3104 阅读 · 1 评论 -
Lua学习之路(十二) ------ Lua table(表)
table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组、字典等。Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil。Lua table 是不固定大小的,你可以根据自己需要进行扩容。Lua也是通过table来解决模块(module)、包(package)和对象(Object)的。 例如string.format表示使用"format...转载 2018-06-07 12:15:09 · 399 阅读 · 0 评论 -
ILRuntime热更案例学习(四) ------ Coroutine/MonoBehaviour/LitJson
官方示例下载地址1: https://github.com/Ourpalm/ILRuntime官方示例下载地址2 : https://github.com/Ourpalm/ILRuntimeU3D官方文档地址 : https://ourpalm.github.io/ILRuntime/public/v1/guide/tutorial.html一.Coroutine案例此案例向我们展...原创 2018-12-12 14:10:25 · 3701 阅读 · 1 评论