|
- using System.Collections;using System.Collections.Generic;using UnityEngine;using XLua;/*
- * Author:W
- * C#访问Lua中全局函数
- */publicclassCSharpCallLua:MonoBehaviour{privateLuaEnv luaEnv;// Use this for initializationvoid Start (){
- luaEnv =newLuaEnv();
- luaEnv.DoString("require 'CSharpCallLua'");//方式1:C#中定义委托来和Lua中全局函数建立映射Addadd= luaEnv.Global.Get<Add>("add");add(2,3);Add2 add2 = luaEnv.Global.Get<Add2>("add2");int res =add2(4,5);
- Debug.Log("add2 res = "+res);Add3 add3 = luaEnv.Global.Get<Add3>("add3");int res2;int res3;int res4 =add3(6,8,out res2,out res3);
- Debug.Log("add3 res4="+res4+" res2="+res2+" res3="+res3);
- Debug.Log("==========================================");//方式2:使用xlua自带的LuaFunction函数建立映射,无需创建委托//缺点:慢,不推荐使用LuaFunction luaFunction = luaEnv.Global.Get<LuaFunction>("add3");object[] oArr = luaFunction.Call(2,6);foreach(object o in oArr){
- Debug.Log(o);}}//针对无返回的[CSharpCallLua]delegatevoidAdd(int a,int b);//针对Lua中返回一个结果的[CSharpCallLua]delegateintAdd2(int a,int b);//针对Lua返回多个结果的 注意:out与ref都可以[CSharpCallLua]delegateintAdd3(int a,int b,outint res2,outint res3);privatevoidOnDestroy(){if(luaEnv !=null)
- luaEnv.Dispose();}}
复制代码 lua脚本- function add(a,b)
- print("Add")
- end
- function add2(a,b)return a+b
- end
- function add3(a,b)return a+b,a,b
- end
复制代码 运行结果截图如下:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|