摘要:
有人在之前的博客中问我有关共享资源打包的代码,其实这一块很简单,就两个函数: BuildPipeline.PushAssetDependencies():依赖资源压栈; BuildPipeline.PopAssetDependencies():依赖资源出栈。 直接看代码,下面为打包示例代码... 阅读全文
摘要:
Lua是一种很好的扩展性语言,Lua解释器被设计成一个很容易嵌入到宿主程序的库。LuaInterface则用于实现Lua和CLR的混合编程。(一)Lua from the CLR 测试环境:在VS2010中建一个C#控制台应用程序,并添加LuaInterface.dll的引用(安装LuaFor... 阅读全文
摘要:
(一)通过一个简单的例子来看一下userdata的用法: 写一个C的Lua库,让Lua能够访问C的数组,借助userdata来实现。 (1)VS中新建一个DLL工程,设置好lua库的包含目录、链接库; (2)新建一个源文件main.cpp,代码如下: #include <stdio.h> #incl 阅读全文
摘要:
C函数可以通过堆栈来和Lua交换数据,但有时候C函数需要在函数体的作用域之外保存某些Lua数据,那么我们想到全局变量或static变量,这样做的缺点是:(1)为Lua设计C函数库时,导致不可重入;(2)不是所有的Lua值都能很好的保存到C变量中。那么可不可以将值保存在Lua全局变量里面呢?可以,Lu 阅读全文
摘要:
Lua利用一个虚拟的堆栈来给C传递值或从C获取值。每当Lua调用C函数,都会获得一个新的堆栈,该堆栈初始包含所有的调用C函数所需要的参数值(Lua传给C函数的调用实参),并且C函数执行完毕后,会把返回值压入这个栈(Lua从中拿到C函数调用结果)。 于此相关的C API有几个比较重要的定义如下: (1 阅读全文
摘要:
我们先来看一个简单的例子: lua_State* L = NULL;// 内部调用lua函数double f(double x, double y){ double z; lua_getglobal(L, "f"); // 获取lua函数f lua_pushnumber(... 阅读全文
摘要:
void lua_getglobal (lua_State *L, const char *name);获取lua全局变量,将lua的全局变量的值压栈。堆栈+1 void lua_setglobal (lua_State *L, const char *name);设置lua全局变量,弹出一个值,并 阅读全文
摘要:
Lua可作为扩展性语言(Lua可以作为程序库用来扩展应用的功能),同时也是个可扩展的语言(Lua程序中可以注册由其他语言实现的函数)。 C和Lua交互的部分称为C API。C API是一个C代码与Lua进行交互的函数集。他由以下部分组成:读写Lua全局变量的函数、调用Lua函数的函数、运行Lu... 阅读全文
摘要:
弱表(weak table)是一个很有意思的东西,像C++/Java等语言是没有的。弱表的定义是:A weak table is a table whose elements are weak references,元素为弱引用的表就叫弱表。有弱引用那么也就有强引用,有引用那么也就有非引用。我们先要 阅读全文
摘要:
首先对于Lua语言,它没有打算被用来进行大型的程序设计,相反,Lua目标定于小型到中型的程序设计,通常是作为大型系统的一部分,所以它只提供了一套精简的元素,很多高级语言的概念都没有。这样Lua就成为了一个既简单又灵活的轻量级语言,但是基本上高级语言中的大多数机制都可以在现有Lua的基础上加以实现... 阅读全文