Unity3d+Lua开发
文章平均质量分 65
unity3d +tolua/xlua
四夕立羽
这个作者很懒,什么都没留下…
展开
-
Lua:小数精度计算,几位数判断,四舍五入,最靠近5倍数取整
当我们调用该函数时,该函数返回两个值,第一个值是数字的整数值,第二个返回值是数字的小数值(如果有的话)原创 2022-08-16 00:34:56 · 2351 阅读 · 0 评论 -
Lua与C#交互原理(转)
https://www.cnblogs.com/slysky/p/7919114.htmlhttps://blog.csdn.net/j756915370/article/details/105906839概括:通过栈来实现。lua调用c#就是将lua层的参数和c#导出函数入栈,然后执行函数。c#调用lua就是将c#层的参数和lua函数入栈,然后执行函数虚拟栈Lua在C函数和脚本函数之间创建了一种虚拟栈的结构,栈的元素代表一个Lua的值(table, string, nil等等8种基本类型)。Lu转载 2022-03-10 22:30:18 · 4036 阅读 · 0 评论 -
Lua:泛型for,迭代器,闭包实现ipairs(转)
https://www.jb51.net/article/86840.htm泛型for基本格式for <var-list> in <exp-list> do <body> end 实现自己的ipairsprint("ipair实现原理---------------")local function iter(s, i) i = i + 1 local v = s[i] if v then return i, v endendfunction my转载 2022-03-09 18:45:46 · 382 阅读 · 0 评论 -
Lua:深拷贝与浅拷贝,强引用与弱引用
Lua深拷贝与浅拷贝function DeepCopy(object) -- 已经复制过的table,key为复制源table,value为复制后的table -- 为了防止table中的某个属性为自身时出现死循环 -- 避免本该是同一个table的属性,在复制时变成2个不同的table(内容同,但是地址关系和原来的不一样了) local lookup_table = {} local function _copy(object) if type(o原创 2022-03-08 14:49:09 · 2018 阅读 · 0 评论 -
Lua:weak表,弱表,setmetatable(t, {__mode = “k“})
1)lua的GC默认是自动回收的,当一个对象的引用计数为0时,它就会被GC所回收。2)lua中的表默认是强引用的,当你把某个对象放入表中时,就是生成一个对它的强引用(对象的引用计数+1),在对象的引用计数没有为0之前不会被GC回收;3)如果把一个表声明为弱引用,则当把某个对象放如表中时,生成一个弱引用(对象不会被引用计数,可以理解为引用计数+0);如果一个对象只被弱引用表所引用(对象的引用计数为0),则会被下一次GC自动回收所以弱引用表weak table的用途一般都是出于GC考虑的注意:以上所指对原创 2022-01-20 09:35:23 · 723 阅读 · 0 评论 -
Lua:协程,coroutine.create,coroutine.resume, coroutine.yield
http://cloudwu.github.io/lua53doc/manual.html#2.6Lua 支持协程,也叫 协同式多线程。 一个协程在 Lua 中代表了一段独立的执行线程。 然而,与多线程系统中的线程的区别在于, 协程仅在显式调用一个让出(yield)函数时才挂起当前的执行。调用函数 coroutine.create 可创建一个协程。 其唯一的参数是该协程的主函数。create函数只负责新建一个协程并返回其句柄 (一个 thread 类型的对象); 而不会启动该协程。调用 corou原创 2021-12-29 20:00:00 · 2593 阅读 · 0 评论 -
unity3d:xlua 加载自定义Loader
在xLua加自定义loader是很简单的,只涉及到一个接口: public delegate byte[] CustomLoader(ref string filepath); public void LuaEnv.AddLoader(CustomLoader loader) 通过AddLoader可以注册个回调,该回调参数是字符串,lua代码里头调用require时,参数将会透传给回调,回...原创 2018-05-03 01:24:36 · 1464 阅读 · 0 评论 -
unity3d:vscode+luaide断点调试xlua
准备工作:1.下载vscode 2.下载luaide 免费版:https://www.jianshu.com/p/a2142d4f119c,下载后将zip文件解压到 C:\Users\Administrator.vscode\extensions 但是: 调试luaide的示例工程1.https://www.jianshu.com/p/dda945be6bc2 示例工程中...原创 2018-04-06 23:53:08 · 22537 阅读 · 2 评论 -
unity3d:xlua hotfix 热补丁修改c#脚本bug
先在场景中挂载脚本,加载自定义Loaderusing System.Collections;using System.Collections.Generic;using UnityEngine;using XLua;using System.IO;using UnityEngine.Networking;public class HotFixScript : MonoBehavi...原创 2018-05-07 01:13:26 · 1026 阅读 · 0 评论 -
unity3d:xlua hotfix 官方例子
1.新建工程,xlua文件夹与Plugins文件夹放入assets,tools放assets同级目录 2.添加宏:HOTFIX_ENABLE 3.D:\WorkSoft\unity2017.2.0\Editor\Data\Managed 3个文件Unity.Cecil.dll,Unity.Cecil.Mdb.dll,Unity.Cecil.Pdb.dll,复制E:\U3dProject\Xlu...原创 2018-05-03 00:40:31 · 958 阅读 · 0 评论 -
Lua:面向对象,多态,重载,私有,单例
面向对象--保存类类型的虚表local _class = {} -- added by wsh @ 2017-12-09-- 自定义类型ClassType = { class = 1, instance = 2,} function BaseClass(classname, super) assert(type(classname) == "string" and #classname > 0) -- 生成一个类类型 local class_type =原创 2021-11-09 23:46:47 · 635 阅读 · 0 评论 -
Lua工具类:pack遇到nil截断,闭包绑定,深拷贝,字符串形式输出表中的内容
解决原生pack的nil截断问题local unpack = unpack or table.unpack-- 解决原生pack的nil截断问题,SafePack与SafeUnpack要成对使用function SafePack(...) local params = {...} params.n = select('#', ...) --返回可变参数的数量,赋值给n return paramsend-- 解决原生unpack的nil截断问题,SafePack与SafeUnpack要成对原创 2021-11-09 00:23:25 · 986 阅读 · 2 评论 -
lua语言:类型,基本语法,函数
编程语言之于程序员,若武功招式之于习武之人,招式虽重要,却更在于使用之人。胜者之道,武功只行于表,高手用剑,片草只叶亦威力无穷。类型和变量Booleans两个取值 false 和 true。但要注意 Lua 中所有的值都可以作为条件。在控制结构的条件中除了 false 和 nil 为假,其他值都为真。所以 Lua 认为 0 和空串都是真。Numbers表示实数,Lua 中没有整数。一般有个错误的看法 CPU 运算浮点数比整数慢。事实不是如此,用实数代替整数不会有什么误差(除非数字大于 100原创 2021-10-31 00:51:57 · 477 阅读 · 0 评论 -
Lua:table与object
数据结构队列和双向队列虽然可以使用 Lua 的 table 库提供的 insert 和 remove 操作来实现队列,但这种方式实现的队列针对大数据量时效率太低,有效的方式是使用两个索引下标,一个表示第一个元素,另一个表示最后一个元素。List = {first = 0, last = -1}function List:popleft ()local first = self.firstif first > self.last then error("list is empty")原创 2021-11-03 23:31:07 · 497 阅读 · 0 评论 -
lua面向对象:new,继承,多态
--保存类类型的虚表local _class = {}local lua_obj_count = 0function BaseClass(super) -- 生成一个类类型 local class_type = {} -- 在创建对象的时候自动调用 class_type.__init = false class_type.__delete = false class_type.super = super class_type.New = function(...) lua_obj_原创 2021-08-24 00:35:44 · 1196 阅读 · 0 评论 -
高性能 Lua 技巧(转)
关于性能优化的两条格言:规则 1:不要优化规则 2:还是不要优化(仅限专家)不要在缺乏恰当度量(measurements)时试图去优化软件。编程老手和菜鸟之间的区别不是说老手更善于洞察程序的性能瓶颈,而是老手知道他们并不善于此。做性能优化离不开度量。优化前度量,可知何处需要优化。优化后度量,可知「优化」是否确实改进了代码。基本事实运行代码之前,Lua 会把源代码翻译(预编译)成一种内部格式,这种格式由一连串虚拟机的指令构成,与真实 CPU 的机器码很相似。接下来,这一内部格式交由 C 代码来解释转载 2021-08-07 14:17:47 · 498 阅读 · 0 评论