toLua学习
toLua学习
通用的过程
//开始
LuaState lua = new LuaState();
lua.Start();
--在这个位置插入lua的具体操作--
//结束
lua.CheckTop();
lua.Dispose();
lua = null;
1.第一个例子 DoString
lua.DoString("print("Hollo toLua.");")
2.第二个例子 DoFile 和 Require
string fullPath = Application.dataPath + "\\ToLua/Examples/02_ScriptsFromFile";//找到lua文件的父目录
lua.AddSearchPath(fullPath); //增加lua文件的搜索目录
//DoFile的操作
lua.DoFile("脚本名.lua");
//Require的操作
lua.Require('脚本名(不需要带后缀名)');
3.第三个例子 回调lua的函数
lua脚本:
--start--
function luaFunc(num)
return num + 1
end
test = {}
test.luaFunc = luaFunc
--end--
//优先读取persistentDataPath/系统/Lua 目录下的文件(默认下载目录)
//未找到文件怎读取 Resources/Lua 目录下文件(仍没有使用LuaFileUtil读取)
new LuaResLoader();
lua.DoFile("上面的lua脚本");
//获取lua里面的func的方法
luaFunc=lua.GetFunction("test.luaFunc");
//调用lua里面的方法1
int num = luaFunc.Invoke<int, int>(123456);
//调用lua里面的方法2
int CallFunc()
{
luaFunc.BeginPCall();
luaFunc.Push(123456);
luaFunc.PCall();
int num = (int) luaFunc.CheckNumber();
luaFunc.EndPCall();
return num;
}
num = CallFunc();
//调用lua里面的方法3
DelegateFactory.Init();
Func<int, int> Func = luaFunc.ToDelegate<Func<int, int>>();
//调用lua里面的方法4
num = lua.Invoke<int, int>("test.luaFunc", 123456, true);
4.第四个例子
lua脚本:
--start--
print('Objs2Spawn is: '..Objs2Spawn)
var2read = 42
varTable = {1,2,3,4,5}
varTable.default = 1
varTable.map = {}
varTable.map.name = 'map'
meta = {name = 'meta'}
setmetatable(varTable, meta)
function TestFunc(strs)
print('get func by variable')
end
--end--
lua["Objs2Spawn"] = 5;//对应脚本里面的第一句
lua.DoFile(lua的脚本名);
Debugger.Log("Read var from lua: {0}", lua["var2read"]);//读取lua脚本里面的值
toLua学习的更多相关文章
- 热更新解决方案--tolua学习笔记
一.tolua使用准备工作:从GitHub上下载tolua(说明:这篇笔记使用的Unity版本是2019.4.18f1c1,使用的tolua是2021年4月9日从GitHub上Clone的tolua工 ...
- 学习tolua#·20多个例子
初始项目搭建 clone官方库 新建unity工程 依次把官方库里的Assets和Unity5.x/Assets拷贝到项目Assets里 打开unity工程, 开始逐个学习例子,例子目录: 1. he ...
- Unity热更新学习(二) —— ToLua c#与lua的相互调用
tolua 下载地址:http://www.ulua.org/index.html c#调用lua的方法,tolua的官方例子提供了很多种.我初步学了一种在做项目使用的方法.通过DoFile方法执行l ...
- lua学习笔记
工作需要,上周对lua赶进度似地学习了一遍,主要参考<lua中文教程>一书,中间参考一些<lua游戏开发实践>,首先说说这两本书,后者不适合初学,里面是对一个游戏脚本系统进行粗 ...
- uLua 学习笔记 之一 lua脚本 打包与读取
最近要学习热更新,搜了下,选择了ulua这个插件,本人也是新人.对这个插件也是一知半解,不过幸好加了专门讨论这一块的群,这个群的技术氛围还是很浓重的,特别是已经形成了一套自己的lua学习框架.最近周末 ...
- ulua学习笔记(二):官方资料及问题解决方案
uLua&SimpleFramework入门视频教程网盘地址 视频教程地址 http://pan.baidu.com/s/1gd8fG4N游戏框架地址 https://github.com/j ...
- quick-cocos2dx学习笔记
20140603 下载quick,拉开拉链,跑setup.bat(注意,setup事就是在系统环境变量里加入QUICK_COCOS2DX_ROOT,假设不运行这个的话,启动player时会报找不到fr ...
- tolua++实现lua层调用c++技术分析
tolua++技术分析 cocos2dx+lua 前言 一直都使用 cocos2dx + lua 进行游戏开发,用 Lua 开发可以专注于游戏逻辑的实现,另外一方面可以实现热更新:而且 lua 是一个 ...
- 【cocos2d-x + Lua(1) 绑定Lua并使用tolua++】
为什么要使用Lua进行游戏开发?转载请注明出处http://www.cnblogs.com/zisou/p/cocos2dx-lua1.html 上面一个问题我觉得在我们使用Lua之前需要深入思考的, ...
随机推荐
- C语言中数组做函数参数的问题
数组做函数参数,会退化成为一个指针变量.因此在进行数组参数传递的同时,需要传递一个数组长度的参数变量. 数组长度可以通过sizeof(arr)/siezof(arr[0])来得到.关于这个sizeof ...
- Android Studio 生成APK出现的「前言不允许有内容」错误
Build-Generate Signed APK的时候发现提示「前言不允许有内容」.发现提示的是Android.mk.xxxjni.c存在问题. 解决方法是,把/main/res中的,包括/jni目 ...
- liunx目录/etc下相关配置
这些都是比较有实用性的系统配置,收藏下,以备不时之需!以下是etc下重要配置文件解释: 1./etc/hosts #文件格式: IPaddress hostname aliases #文件功能: 提 ...
- PowerDesigner 把Comment写到name中 和把name写到Comment中
在使用PowerDesigner对数据库进行概念模型和物理模型设计时,一般在NAME或Comment中写中文,在Code中写英文.Name用来显 示,Code在代码中使用,但Comment中的文字会保 ...
- OCX控件避免弹出安全警告的类
1.要加一个头文件: #include <objsafe.h>2.在控件头文件中加入: 1 DECLARE_INTERFACE_MAP()2 BEGIN_INTERFACE ...
- bzoj2875随机数生成器——矩阵快速幂
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2875 矩阵快速幂,把x和c分开求,最后加上即可: 为防止爆long long,要用快速乘. ...
- mybatis 优缺点和适用场合
MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架, MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置和原生Map使用 ...
- POI生成Excel工具类
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.ByteArrayInp ...
- androidEditTextinputType及android:imeOptions=”actionDone”(转)
一.android 软件盘事件响应 在android中,有时需要对EditText实现软件盘监听的场景.当android按下软键盘的时候,响应完成.发送.搜索或者其他事件. Google 提供了 Ed ...
- 3 pyspark学习---sparkContext概述
1 Tutorial Spark本身是由scala语言编写,为了支持py对spark的支持呢就出现了pyspark.它依然可以通过导入Py4j进行RDDS等操作. 2 sparkContext (1) ...