安装
1、在https://github.com/Tencent/xLua下载zip
把lua代码写在C#里不方便,可新建lua文件,改后缀名为txt,放到Resources文件夹中。然后require它。
c#调用lua
lua调用c#
1、在https://github.com/Tencent/xLua下载zip
2、复制asset目录到工程目录下
如何调用lua语言
新建虚拟机,然后调用DoString即可。
XLua.LuaEnv luaenv
=
new
XLua.LuaEnv
(
)
;
void Start
(
)
{
luaenv.DoString
(
"CS.UnityEngine.Debug.Log('hello world')"
)
;
luaenv.DoString
(
"print('lua hello world')"
)
;
}
lua文件内容
CS.UnityEngine.Debug.Log
(
'hello world'
)
c#文件内容
XLua.LuaEnv luaenv
=
new
XLua.LuaEnv
(
)
;
void Start
(
)
{
luaenv.DoString
(
"require 'main'"
)
;
}
c#调用lua的全局变量、表和函数。
lua文件
CS.UnityEngine.Debug.Log
(
'hello world'
)
--给c#调用
a
=
10
t
=
{
a
=
1
,
b
=
2
}
function addfun
(
a
,
b
)
return
a
+
b
end
c#文件
XLua.LuaEnv luaenv
=
new
XLua.LuaEnv
(
)
;
void Start
(
)
{
luaenv.DoString
(
"require 'main'"
)
;
/
/
访问全局变量
int a
=
luaenv.Global.Get
<
int
>
(
"a"
)
;
Debug.Log
(
a
)
;
/
/
访问table
Table t
=
luaenv.Global.Get
<
Table
>
(
"t"
)
;
Debug.Log
(
t.a
)
;
/
/
调用fun
XLua.LuaFunction addfun
=
luaenv.Global.Get
<
XLua.LuaFunction
>
(
"addfun"
)
;
object[] c
=
addfun.Call
(
1
,
2
)
;
int cint
=
System.Convert.ToInt
32
(
c[
0
]
)
;
Debug.Log
(
cint
)
;
}
}
下面演示使用lua改变物体位置
--调用c#
local
cube
=
CS.UnityEngine.GameObject.Find
(
"Cube"
)
print
(
"pos.x = "
..cube.transform.
position
.x
)
cube.transform.
position
=
CS.UnityEngine.Vector
3.
one;
cube.transform.
position
=
CS.UnityEngine.Vector
3
(
2
,
2
,
2
)
;