
热更新
文章平均质量分 84
热更新
Hello Bug.
记录一点点
展开
-
xLua(九)——实战
一:使用xLua的步骤——导入xLua插件其实xLua本质就是一个Unity工程,把Asset中的文件导入到Unity工程中就搞定了(导入之后编辑器菜单栏会扩展出一个XLua选项)——添加宏File——Build Settings——Player Settings——Other Settings——Scriptsing Define Symbols——输入HOTFIX_ENABL...原创 2019-07-26 22:12:15 · 7164 阅读 · 1 评论 -
xLua(八)——Lua访问C#(二)
三:访问C#中的成员属性和成员方法成员属性和成员方法都是指向具体的对象,不像静态属性和静态方法一样通过CS获取到就可以——访问C#中的成员属性例如Object类中的name属性就是一个成员属性在Lua中编写调用C#的代码:在CS中编写加载Lua的代码,运行后层级面板中Main Camera的名称修改为newCamera——访问C#中的成员方法例如gameObject的...原创 2019-04-17 15:43:25 · 3031 阅读 · 1 评论 -
xLua(七)——Lua访问C#(一)
Lua访问C#都需要用CS去访问到类中的方法,字段,属性如果在Lua文件中使用print则在Untiy输出结果带有LUA:,如果使用CS去访问到Untiy中的输出方法,则不带有Lua:,因为前者是通过Lua中的输出语句进行的输出,后者是通过Unity中的输出语句进行的输出print(CS.UnityEngine.Time.timeScale) --LUA...原创 2019-04-17 14:24:37 · 3543 阅读 · 0 评论 -
xLua(六)——C#访问Lua的function
首先在Lua脚本中写一些function一:映射到委托(推荐使用)——访问无参functionusing XLua;using UnityEngine;using System;public class CsCallLua : MonoBehaviour{ private void Start() { LuaEnv luaenv = new ...原创 2019-04-17 09:49:47 · 4566 阅读 · 0 评论 -
xLua(五)——C#访问Lua的table
首先在Lua脚本中定义一个table一:映射到Class/Struct新建映射类/结构体中的字段名必须与Lua中table的键名相同(Lua中键为name,那么映射类中字段名也要是name)using UnityEngine;using XLua;public class CsCallLua : MonoBehaviour{ private void Start()...原创 2019-04-16 10:22:57 · 5442 阅读 · 0 评论 -
xLua(四)——C#访问Lua的基本类型
Lua中的类型:nil,number,bool,string,table,function其中基本类型有nil,number,bool,stringLua的number对应C#的int,float,double等等Lua的string对应C#的stringLua的bool对应C#的bool首先在Lua脚本中定义几个基本类型的变量注意要先用require加载Lua文件到Lua虚拟机...原创 2019-04-15 21:27:16 · 3498 阅读 · 0 评论 -
xLua(三)——在C#中访问Lua代码
xLua提供的各种方法都是在LuaEnv(Lua的环境)类中的,使用之前需要构造一个Lua对象(LuaEnv虚拟机),之后用这个虚拟机去访问各种方法一个LuaEnv对应一个Lua虚拟机,出于开销的考虑,建议全局唯一——xLua加载Lua文件是通过DoString来实现的,DoString的参数是一个字符串——当在C#中使用Lua虚拟机对象去调用Lua代码,输出结果的前面会带有一个LUA:...原创 2019-04-14 20:28:37 · 4082 阅读 · 1 评论 -
xLua(二)——下载
xLua没有官网,需要在GitHub上下载:https://github.com/Tencent/xLua下载完成后解压文件,其实xLua本质就是一个Unity工程,把Asset中的文件导入到Unity工程中就搞定了 Plugins文件夹下是各种运行的平台配置文件等等,一般不需要查看xLua文件夹下是教程,源码,示例等等——如果遇到一些问题可以从官方的faq文档中寻找...原创 2019-04-14 16:29:03 · 4752 阅读 · 0 评论 -
xLua(一)——介绍
一:什么是热更新?热更新是指当游戏出现bug,或者需要修改,增加某个功能的时候,我们不需要重新下载安装包,就可以更新游戏内容游戏上线后,遇见bug或者需要更新内容,一般有两种做法:第一种:重新打包上传一个新的安装包到应用商店(需要审核,费时间),然后让玩家下载新的客户端安装包(需要重新下载,费流量)第二种:在游戏内更新,游戏启动时去下载需要更新的资源第一种我们一般称为游戏大版本更新,第二...原创 2019-04-14 16:22:35 · 13154 阅读 · 1 评论 -
Lua(十八)——错误处理,垃圾回收
一:错误处理错误处理分为两大部分——语法错误 ——运行错误错误处理的函数:assert函数assert函数先检查第一个参数若为true,则不做任何输出若为false,则把第二个参数作为错误信息输出二:垃圾回收在Lua中利用一个垃圾收集器来收集所有死对象(访问不到的对象),垃圾收集器的实现利用了一个叫增量标记-扫描收集器的东西,它使用两个数...原创 2019-04-10 10:08:15 · 2584 阅读 · 0 评论 -
Lua(十七)——面向对象
Lua并不是一个支持面向对象的语言,没有类的概念,但是可以间接地去实现面向对象的功能对象是由属性+方法组成,Lua中最基本的结构是table,我们可以用table来描述对象的属性,function函数用来表示方法,所以Lua中的面向对象是通过table+function模拟出来的一:实现Lua中类的概念下面是Lua模拟出的面向对象的例子:对象由属于和方法组成(下面的person表中...原创 2019-04-09 15:49:24 · 2577 阅读 · 0 评论 -
Lua(十六)——文件
一:文件中的输入与输出读取一个文件,变量赋值等都是输入(input)将一个文件的内容写到另一个文件中,就是输出(output)二:文件读取模式介绍r:只读方式打开文件,该文件必须存在w:只写方式打开文件,若文件存在则写入的内容会覆盖原先所有内容,若文件不存在则建立该文件a:只写方式打开文件,若文件存在则写入的内容会附加到原先的文件尾,若文件不存在则建立该文件r+:可读可写方式打...原创 2019-04-09 15:48:34 · 2711 阅读 · 0 评论 -
Lua(十五)——协同程序
一:协程与线程的区别在 Lua 里,最主要的线程是协同程序(coroutine),它跟线程差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停二:什么是协程协程和线程都是针对于函数来说的,一个函数的正常执行步骤是执行完此...原创 2019-04-09 15:47:02 · 2614 阅读 · 1 评论 -
Lua(十四)——元表
一:什么是元表元表是经过普通表扩展的表,使得扩展一些功能更加方便在Lua中我们可以访问到表的键和值,然后对他们进行操作,但是无法对两个表直接进行操作,假如我们想直接对两个表进行相加,使用元表可以拓展功能二:设置元表setmetatable返回值为普通表两种设置的方法:三:得到元表getmetatable返回值为元表四:元方法元方法就是元表中的键——__in...原创 2019-04-09 13:13:51 · 2693 阅读 · 0 评论 -
Lua(十三)——模块与包
Lua中的模块就是一个封装库,类似于C#的命名空间,可以把公有的变量和方法放在一个文件中,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度一:模块的定义两种定义模块中函数的形式,可以用匿名函数定义也可以用普通函数定义二:模块的使用(require)我个人理解引入模块就是引入一个类,引入这个模块(类)之后就可以使用这个模块(类)中的全局变量和全局函数例如...原创 2019-04-04 09:02:53 · 2710 阅读 · 0 评论 -
Lua(十二)——表
一:创建表在Lua中,表的创建是通过构造表达式来完成——最简单的表是{},用来创建一个空表——也可以像创建字典一下初始化一个表——也可以像创建数组一样初始化一个表表的索引可以是数字或字符串:二:访问元素——用键值对方式初始化的表用点或者用中括号(中括号里面必须是字符串)去访问——用数组方式初始化的表直接用索引下标访问就可以(Lua中的索引下标默认是从1开始,索引可以为负...原创 2019-04-04 09:01:55 · 2856 阅读 · 0 评论 -
Lua(十一)——迭代器
一:Lua中内置的迭代函数——pairs——ipairs——pairs与ipairs的区别1.pairs既能遍历数组形式的表也能遍历键值对形式的表,ipairs只能遍历数组形式的表 2.pairs会遍历所有不为nil的元素(如果遇到nil则跳过当前元素继续遍历下一个),ipairs从索引1开始遍历遇到nil则停止遍历 遍历时先遍历整型...原创 2019-04-04 09:01:17 · 2442 阅读 · 0 评论 -
Lua(十)——数组
Lua中没有数组这种类型,是利用表这种数据类型去实现的数组,但是与C#的数组不同,Lua中用表实现的数组是可扩展的,可动态修改一:声明数组——普通声明用数组的方式声明一个表就是声明一个数组——动态声明动态声明可以声明索引为负数的数组(Lua中的索引下标默认是从1开始的,也可以为负数)二:遍历数组注意遍历多维数组时,第一维不能为nil...原创 2019-04-04 09:00:36 · 5781 阅读 · 1 评论 -
Lua(九)——函数
一:函数的定义在Lua中函数是一个数据类型!二:函数的特性——函数可以当作一个变量作为数据赋值:将myfun作为数据变量传递给fun1,fun1函数就有了与myfun函数相同的功能——函数可以作为参数传递(类似于C#中的委托与事件):将myPrint函数当做参数传递给add函数的fun参数——函数可以定义为匿名函数 ——函数可以返回多个值三:函数的...原创 2019-04-04 08:59:34 · 2512 阅读 · 0 评论 -
Lua(八)——字符串操作
一:字符串操作所有的字符串操作都会返回一个新的字符串,不会对原有的字符串有影响——string.upper:将所有字母转换为大写——string.lower:将所有字母转换为小写——string.gsub:替换字符串——string.find:查找字符串返回值是两个number类型的值,所查找到字符串的起始位置与结束位置(返回值可以为nil)——string.r...原创 2019-04-04 08:58:37 · 2495 阅读 · 1 评论 -
Lua(七)——运算符
一:算数运算符注意Lua中没有 +=,-=,++这些运算符+:加-:减*:乘/:除%:余^:幂-:负Lua中没有float,double等类型,所有数字都是number类型,所以计算所得数字是多少就是多少Lua中+只能用作数字计算,不能用作字符串连接二:关系运算符==:等于~=:不等于>=:大于等于<=:小于等于>:大于<:小于...原创 2019-04-04 08:57:59 · 4905 阅读 · 0 评论 -
Lua(六)——循环
一:while循环(C#的while循环)二:for循环(C#的for循环)——数值for循环Lua中的for循环三个表达式在循环开始前一次性求值,以后不再进行求值:下面的循环程序的三个表达式在一开始就赋了值并且之后不会被修改,i改变任何值都是执行10次循环,i修改的值只会影响内部的值——泛型for循环(使用Lua中的迭代器函数pairs与ipairs,类似于fo...原创 2019-04-04 08:56:43 · 2833 阅读 · 0 评论 -
Lua(五)——流程控制
一:if判断二:if-else判断三:if-elseif判断elseif中间没有空格原创 2019-04-04 08:56:04 · 2317 阅读 · 0 评论 -
Lua(四)——变量
一:局部变量与全局变量使用do-end可以创建一个语句块(相当于C#中的花括号{})默认声明的变量都是全局变量(即使在函数内,在语句块内声明也是全局变量)局部变量需要在声明前加上关键字local全局变量的销毁是在文件运行结束时,局部变量的销毁是在所在语句块结束时全局变量与局部变量的生命周期:因为一开始声明的a是全局变量它的销毁是在文件运行结束时,所以当局部变量覆盖全局变量时全...原创 2019-04-07 16:43:04 · 2475 阅读 · 0 评论 -
Lua(三)——基本语法与数据类型
一:Lua的语法规则——语句结尾的分号可加可不加——C#中需要声明类和方法去执行语句,而Lua中不需要声明类和方法就可以直接执行语句(Lua轻量小巧简单)——与C#不同,Lua中的任何参数都不能声明类型,只需要声明变量名就可以二:Lua的注释——单行注释——多行注释多行注释与单行注释之间的转换技巧:将多行注释的开头添加一个-,则第一行和最后一行都变成了单行注...原创 2019-04-04 08:54:57 · 2611 阅读 · 0 评论 -
Lua(二)——环境安装
一:Intellij IDEA(推荐使用)Intellij IDEA下载地址(下载Ultimate版本和Community版本都可以)它是JetBrains公司开发的一款java编程语言的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,但是我们可以利用一款叫EmmyLua的插件来进行Lua开发1.导入Lua插件File——Settings——Plugins——在Ma...原创 2019-03-25 12:30:49 · 2407 阅读 · 0 评论 -
Lua(一)——Lua介绍
一:什么是Lua?Lua是一种轻量小巧的脚本语言,它由标准的C语言编写并且是开源的,可以很方便的和其他程序进行集成和扩展(C#,Java.....),其设计目的是为了嵌入应用程序中,为应用程序提供灵活的扩展和定制功能。一般来讲Lua不能单独用于一款游戏的开发,因此对于一个Unity项目,一般先用C#进行开发,后续的热更新再通过Lua来完成,从这里可以知道两点:Lua语言的目的是嵌入式,...原创 2019-03-25 12:30:08 · 10975 阅读 · 0 评论 -
AssetBundle(四)——通过Manifest文件得到依赖
加载的Manifest文件是主的Manifest文件而不是每个AB包的Manifest文件,因为从主Manifest可以访问到所有资源的依赖资源using UnityEngine;public class LoadFromWeb : MonoBehaviour{ private void Start() { string path = "Assets\A...原创 2019-03-25 12:26:11 · 7848 阅读 · 0 评论 -
AssetBundle(三)——加载AB包中资源的方法
一:同步加载其中一个资源T objectFromBundle=assetBundle.LoadAsset<T>(string assetName)二:同步加载所有资源T[]objectsFromBundle=assetBundle.LoadAllAssets<T>()三:异步加载其中一个资源AssetBundleRequest request = as...原创 2019-03-25 12:25:15 · 3909 阅读 · 0 评论 -
AssetBundle(二)——AssetBundle使用流程
ab包流程原创 2019-03-25 12:24:21 · 3591 阅读 · 3 评论 -
AssetBundle(一)——AssetBundle介绍
一:什么是AssetBundle?Asset(资源) + bundle(捆绑) = AssetBundle(资源打包),一个AssetBundle就是一组资源的集合,简称为AB包。打包后:它是一个真实存在于硬盘上的文件,可以称为压缩包,里面可能包含多个文件(AB包中的二进制文件,文件名的后缀必须为.bytes)——模型,贴图,材质,预制体,声音,甚至整个场景,在游戏运行时被加载出来 这些...原创 2019-03-25 12:23:05 · 5415 阅读 · 0 评论