草庐IT

ua5.4源码剖析:三. C++与Lua相互调用

概述从本质上来看,其实说是不存在所谓的C++与lua的相互调用。lua是运行在C上的,简单来说lua的代码会被编译成字节码在被C语言的语法运行。在C++调用lua时,其实是解释运行lua文件编译出来的字节码。lua调用C++其实还是解释运行lua文件编译出来的字节码的语义是调用lua栈上的C++函数。示例来看下面这段代码:C++#include"Inc/lua.h"#include"Inc/lauxlib.h"#include"Inc/lualib.h"#include"Inc/lobject.h"}usingstd::cout;usingstd::endl;intCAdd(lua_State

ua5.4源码剖析:三. C++与Lua相互调用

概述从本质上来看,其实说是不存在所谓的C++与lua的相互调用。lua是运行在C上的,简单来说lua的代码会被编译成字节码在被C语言的语法运行。在C++调用lua时,其实是解释运行lua文件编译出来的字节码。lua调用C++其实还是解释运行lua文件编译出来的字节码的语义是调用lua栈上的C++函数。示例来看下面这段代码:C++#include"Inc/lua.h"#include"Inc/lauxlib.h"#include"Inc/lualib.h"#include"Inc/lobject.h"}usingstd::cout;usingstd::endl;intCAdd(lua_State

Lua5.4源码剖析:一. 简述lua变量类型可变特性的实现。

概述lua是由C语言编写,运行在虚拟机上的弱类型解释型语言。lua变量为什么可以任意改变类型?切豆腐理论对于硬盘上保存的数据来说,其本身不具备“意义”,其含义取决于我们如何解释这一段数据首地址+长度确定内存上的一段数据。编码/解码赋予这段数据意义。TValuetypedefunionValue{structGCObject*gc;/*collectableobjects*/void*p;/*lightuserdata*/lua_CFunctionf;/*lightCfunctions*/lua_Integeri;/*integernumbers*/lua_Numbern;/*floatnumb

Lua5.4源码剖析:一. 简述lua变量类型可变特性的实现。

概述lua是由C语言编写,运行在虚拟机上的弱类型解释型语言。lua变量为什么可以任意改变类型?切豆腐理论对于硬盘上保存的数据来说,其本身不具备“意义”,其含义取决于我们如何解释这一段数据首地址+长度确定内存上的一段数据。编码/解码赋予这段数据意义。TValuetypedefunionValue{structGCObject*gc;/*collectableobjects*/void*p;/*lightuserdata*/lua_CFunctionf;/*lightCfunctions*/lua_Integeri;/*integernumbers*/lua_Numbern;/*floatnumb

【远程文件浏览器】Unity+Lua开发调试利器

RemoteFileExplorer是一个跨平台的远程文件浏览器,用户通过UnityEditor就能操作运行在手机上的游戏或是应用的的目录文件。比如当项目打包运行到设备上时,可通过RemoteFileExplorer直接浏览设备上的目录文件,并进行下载,上传,删除等操作。尤其是Unity+Lua开发环境下的调试利器,当然,这里的调试不是指代码的逐行调试,而是泛指定位排查问题用武之地在很多场景下利用RemoteFileExplorer都可以极大的提高开发调试效率。例如:应用真机上运行时出现异常情况,推测可能是关键资源丢失导致。此时可以通过本工具直接浏览手机上的相关文件,查看关键资源是否存在通过本

【远程文件浏览器】Unity+Lua开发调试利器

RemoteFileExplorer是一个跨平台的远程文件浏览器,用户通过UnityEditor就能操作运行在手机上的游戏或是应用的的目录文件。比如当项目打包运行到设备上时,可通过RemoteFileExplorer直接浏览设备上的目录文件,并进行下载,上传,删除等操作。尤其是Unity+Lua开发环境下的调试利器,当然,这里的调试不是指代码的逐行调试,而是泛指定位排查问题用武之地在很多场景下利用RemoteFileExplorer都可以极大的提高开发调试效率。例如:应用真机上运行时出现异常情况,推测可能是关键资源丢失导致。此时可以通过本工具直接浏览手机上的相关文件,查看关键资源是否存在通过本

对接水仙后台(支持AndLua+、FA、FA2、AIDE lua、Simple Lua等)

前言上一篇文章中写了lua对接水仙后台,不过发现不能支持图片上传,比如修改头像等,通过修改,支持了api封装require"import"import"http"shuixian={post=function(moduleName,method,postdata,filedata,call)localurl="http://shuixian.ltd/main/api/"if(filedata==nil)thencontent,cookie,code,header=http.post(url..moduleName.."/"..method..".php",postdata)call(code,

对接水仙后台(支持AndLua+、FA、FA2、AIDE lua、Simple Lua等)

前言上一篇文章中写了lua对接水仙后台,不过发现不能支持图片上传,比如修改头像等,通过修改,支持了api封装require"import"import"http"shuixian={post=function(moduleName,method,postdata,filedata,call)localurl="http://shuixian.ltd/main/api/"if(filedata==nil)thencontent,cookie,code,header=http.post(url..moduleName.."/"..method..".php",postdata)call(code,

Lua基础语法学习笔记

Lua是一门语言,我们可以使用一个库,可以在运行时去编译执行Lua中的代码,从而实现自己的内存中的数据和逻辑;准备学习环境:新建一个Lua项目目录,用来写我们的Lua代码;进入目录,右键使用vsCode打开或者,先打开vsCode,然后文件->打开文件夹,选择我们的项目目录;为vsCode安装Lua相关的插件Lua(LuaLanguageServercodedbyLua)和LuaDebug插件执行Lua按Ctrl+J,打开控制台,输入命令:Lua文件名.Lualocal:代表变量,只能在当前chunk(块)中访问到不加local的变量:代表变量,默认情况下是全局可以访问数字:整数和浮点数都是n

Lua基础语法学习笔记

Lua是一门语言,我们可以使用一个库,可以在运行时去编译执行Lua中的代码,从而实现自己的内存中的数据和逻辑;准备学习环境:新建一个Lua项目目录,用来写我们的Lua代码;进入目录,右键使用vsCode打开或者,先打开vsCode,然后文件->打开文件夹,选择我们的项目目录;为vsCode安装Lua相关的插件Lua(LuaLanguageServercodedbyLua)和LuaDebug插件执行Lua按Ctrl+J,打开控制台,输入命令:Lua文件名.Lualocal:代表变量,只能在当前chunk(块)中访问到不加local的变量:代表变量,默认情况下是全局可以访问数字:整数和浮点数都是n