Xlua新手入门教程 VR资源

tyxxxx 2017-10-26 15:07:48

安装


1、在https://github.com/Tencent/xLua下载zip


2、复制asset目录到工程目录下


 


如何调用lua语言


新建虚拟机,然后调用DoString即可。

 
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
using UnityEngine;
using System.Collections;
 
public class NewBehaviourScript : MonoBehaviour {
    XLua.LuaEnv luaenv = new XLua.LuaEnv();
    // Use this for initialization
    void Start () {
        luaenv.DoString("CS.UnityEngine.Debug.Log('hello world')");
        luaenv.DoString("print('lua hello world')");
    }
     
    // Update is called once per frame
    void Update () {
     
    }
}

把lua代码写在C#里不方便,可新建lua文件,改后缀名为txt,放到Resources文件夹中。然后require它。
 

lua文件内容
 
CS.UnityEngine.Debug.Log('hello world')

c#文件内容
 
 
1
2
3
4
5
6
7
public class NewBehaviourScript : MonoBehaviour {
    XLua.LuaEnv luaenv = new XLua.LuaEnv();
 
    // Use this for initialization
    void Start () {
        luaenv.DoString("require 'main'");
    }
}


c#调用lua
下面演示c#调用lua的全局变量、表和函数。

lua文件
 
1
2
3
4
5
6
CS.UnityEngine.Debug.Log('hello world')
--给c#调用
a = 10
t = {a=1,b=2}
function addfun(a,b)
    return a+b
end

c#文件
 
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
public class NewBehaviourScript : MonoBehaviour {
    XLua.LuaEnv luaenv = new XLua.LuaEnv();
     
    // Use this for initialization
    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.ToInt32 (c[0]);
        Debug.Log (cint);
    }
}


lua调用c#
下面演示使用lua改变物体位置
 
1
2
3
4
--调用c#
local cube = CS.UnityEngine.GameObject.Find("Cube")
print("pos.x = "..cube.transform.position.x)
cube.transform.position = CS.UnityEngine.Vector3.one;
cube.transform.position = CS.UnityEngine.Vector3(2,2,2);


lua组件
xlua的示例Xlua/Examples/02_U3DScripting给出了一个lua组件的示例,该示例只支持awake、start、update、ondestroy,其他自己添加。使用方法是给某个物体添加LuaBehaviour组件,填写LuaScript。


lua文件
 
1
2
3
function update()
    local r = CS.UnityEngine.Vector3.up * CS.UnityEngine.Time.deltaTime * 50
    self.transform:Rotate(r)
end


由于Xlua文档丰富,大部分问题可以在文档中找到,本文总结几种xlua最简单的调用示例。
99VR视界二维码
热门推荐
Hot Recommended
在线客服