Lua_ uLua_C#中使用Lua_016
来源:互联网 发布:淘宝旺旺客服回复模板 编辑:程序博客网 时间:2024/06/07 11:45
前期工作,导入ulua_v1.25.unitypackage,然后在工程中引入LuaInterface命名空间。
方法一:
using LuaInterface;// 常见一个Lua解释器LuaState lua = new LuaState();//创建全局变量 "num" and "str"lua["num"] = 2;lua["str"] = "a string";//创建空表lua.NewTable("table_one");LuaTable tb = lua.GetTable("table_one");tb["a"]=1000;print(tb["a"]);// Read global variables "num" and "str"double num = (double)lua["num"];string str = (string)lua["str"];
方法二:
DoString 和DoFile方法可以执行Lua脚本,方法返回一个脚本执行后返回的数组
// Execute a Lua script filelua.DoFile("script.lua");// Execute chunks of Lua codelua.DoString("num=2");lua.DoString("str=’a string’");// Lua code returning valuesobject[] retVals = lua.DoString("return num,str");
- DoString
using UnityEngine;using System.Collections;using LuaInterface;public class HelloWorld : MonoBehaviour { // Use this for initialization void Start () { LuaState l = new LuaState(); string str = "print('hello world 世界')"; l.DoString(str); }}using UnityEngine;using System.Collections;using LuaInterface;public class ScriptsFromFile_01 : MonoBehaviour{ public TextAsset scriptFile; // Use this for initialization void Start() { LuaState l = new LuaState(); l.DoString(scriptFile.text); }}
- DoFile
using UnityEngine;using System.Collections;using LuaInterface;public class ScriptsFromFile_02 : MonoBehaviour{ // Use this for initialization void Start() { //只是展示如何加载文件。不是推荐这么做 LuaState l = new LuaState(); string path = Application.dataPath + "/uLua/luaScript.lua"; l.DoFile(path); }}
参考代码
using System.Collections;using System.Collections.Generic;using UnityEngine;using LuaInterface;public class Test : MonoBehaviour { // Use this for initialization void Start() { //创建一个Lua的解释器 LuaState lua = new LuaState(); lua["num"] = 34; Debug.Log(lua["num"]); //可以直接执行lua的代码 lua.DoString("num=2"); Debug.Log(lua["num"]); lua.DoString("str='a string'"); Debug.Log(lua["str"]); object[] values = lua.DoString("return num,str"); foreach (var item in values) { Debug.Log(item); } //下面这句代码默认的路径是 Application.dataPath +\uLua\Lua + LuaTest.lua //Util.LuaPath("LuaTest.lua"); //在这里不能直接使用Lua. string path = Application.dataPath + "/LuaTest.lua"; //执行lua的文件 object[] objs = lua.DoFile(path); }}
在Lua中调用C#静态方法
编写脚本如下
using System.Collections;using System.Collections.Generic;using UnityEngine;using LuaInterface;public class Test : MonoBehaviour { // Use this for initialization void Start() { string lua01 = @"Test.MethodTest01()"; LuaScriptMgr luaMgr = new LuaScriptMgr(); luaMgr.Start(); LuaState luastate = luaMgr.lua; luastate.DoString(lua01); } public static void MethodTest01() { Debug.Log("Hahahaha"); }}
然后下图中点击Clear LuaBinder file + wrap Files
然后在uLua/Editor目录下面找到WrapFile文件,在binds静态数组中添加_GT(typeof(Test)),最后在上图中选择第二步Gen Lua Wrap Files,运行Unity即可
阅读全文
0 0
- Lua_ uLua_C#中使用Lua_016
- Lua_ uLua_C#调用Lua方法_019
- Lua_绑定tinyxml到Lua中解析XML
- Lua_在Lua中继承Cocos2dx的C++类
- Lua的系统学习(杂)_在VS中使用Lua_将C#方法注册进入Lua并执行的操作步骤
- lua_学习
- cocos2dx3.10-lua_使用官方示例的方式获取UI控件
- Lua_基本Lua语法
- Lua_面向对象
- Lua_各种工具方法
- Lua_创建Label
- Lua_创建Menu
- Lua_创建精灵
- Lua_场景节点事件
- Lua_单点触摸
- Lua_多点触摸
- Lua_键盘事件
- Lua_重力加速器
- Python连接DB2操作的一个小例子
- 37:雇佣兵
- 基于百度云播放器开发的视频播放软件
- 深入理解Java引用类型
- centos 6.5下编译soap 支持ssl
- Lua_ uLua_C#中使用Lua_016
- 图文讲解jenkins的安装与配置---远程发布、自动监测代码更新
- 0908 MVC设计模式
- Linux
- java中调用打印机打印本地文件
- 盘点8种CSS实现垂直居中水平居中的绝对定位居中技术
- 1、Nginx服务器架构初探
- Cocos2d 铁路达人游戏 源码
- MySql数据库导出csv文件