Lua_ uLua_C#中使用Lua_016
2017-09-08 11:22
183 查看
前期工作,导入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 file lua.DoFile("script.lua"); // Execute chunks of Lua code lua.DoString("num=2"); lua.DoString("str=’a string’"); // Lua code returning values object[] 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即可
相关文章推荐
- Lua_ uLua_C#中使用Lua_016
- ulua中lua代码使用反射调用c#详解
- C#中使用LuaInterface
- Xlua使用C#中第三方库:DoTween
- Tolua使用笔记五:lua中遍历访问c#的Dictionary类对象与枚举类型
- 在 C# 中使用 Lua(摘要)
- 在C#中使用Lua代码或lua文件
- Lua_ uLua_Lua调用C#方法_020
- Lua_ uLua_Lua和C#变量交互_018
- Lua的系统学习(杂)_使用uLua在Unity中创建一个Sphere小球
- 在VS中 使用C#访问Lua
- Lua 中使用C#的类
- Unity3d ulua c#与lua交互+wrap文件理解
- 在 C# 中使用 Lua(摘要)
- ulua在C#中调用lua并传递参数
- ulua里如何将C#创建的UnityEngine对象返回给lua
- Tolua使用笔记二:lua与C#的函数,变量交互方法
- ulua--在lua中使用Update定时器
- Unity中使用 slua --- 调用c#方法
- Unity3d ulua c#与lua交互+wrap文件理解