1. 程式人生 > >C#如何訪問Lua中的屬性(1)

C#如何訪問Lua中的屬性(1)

參考   http://www.myexception.cn/c-sharp/1881698.html

  1. C#如何訪問Lua中的屬性

1) .C#如何訪問LUA中的屬性?

2) .C#如何訪問LUA中的函式?

3) .C#如何訪問LUA中的表?

第一個檔案  test0.txt 檔案

放在

lua語言

--[[
@author:濤濤
@des:測試C#訪問LUA的一些東東
@date:2016-8-17
--]]

config={name="taotao", age=24,qq="55555555"}

Name="ahui";
Age=24;
isBoy=true;

function PrintFromLua(a)
	print("列印資訊。我來Lua...cs傳的引數的值", a);
	return 200;
end;
print("test0.lua執行完畢..");

Main.cs檔案隨便掛在一個物件上測試
/*
 C#如何訪問Lua中的屬性
1) .C#如何訪問LUA中的屬性?
2) .C#如何訪問LUA中的函式?
3) .C#如何訪問LUA中的表?    
*/

using UnityEngine;
using System.Collections;
//
using LuaInterface;

public class Main : MonoBehaviour {

    private static Main instance;
    public string ss;
    public TextAsset tt;


	// Use this for initialization
	void Start () {
        instance = this;
	}
    // Update is called once per frame
    void Update()
    {

    }

    //C#呼叫LUA
    void testCSharp_GoLua()
    {
        LuaState lua = new LuaState();
        lua.DoString("print'hello world'");
    }

    //C#呼叫LUAFile
    void testCSharp_GoLuaFile()
    {
        LuaState lua = new LuaState();
        //lua.DoFileFromAge(this, "Test0.lua");
        //TextAsset file = (TextAsset)Resources.Load("test0", typeof(TextAsset));
        //if (file == null)
        //{
        //    Debug.Log("sdfds");
        //}
        //else {
        //    Debug.Log("載入成功");
        //}
        lua.DoFile("test0");
    }

    void testCSharp_GoLuaInfor()
    {
        LuaState lua = new LuaState();
        lua.DoFile("test0");
        // 訪問LUA中的表
        LuaTable configTable = lua.GetTable("config");
        Debug.Log("name:" + configTable["name"]);
        Debug.Log("age:" + configTable["age"]);
        Debug.Log("qq:" + configTable["qq"]);
        // 訪問Lua 中的基礎屬性
        Debug.Log("Name:" + lua.GetString("Name"));
        Debug.Log("Age" + lua.GetNumber("Age"));
        Debug.Log("isBoy" + lua["isBoy"]);
        //訪問Lua中的函式 
        LuaFunction luaFun = lua.GetFunction("PrintFromLua");
        if (luaFun != null)
        {
            System.Object[] obResult = luaFun.Call(100);
            Debug.Log("obResult" + obResult[0]);
        }
    }
    
    void OnGUI()
    {
        if (GUILayout.Button("第一節.C#呼叫LUA"))
        {
            testCSharp_GoLua();
        }

        if (GUILayout.Button("第二節.C#呼叫LUA File"))
        {
            testCSharp_GoLuaFile();
        }
        if (GUILayout.Button("第三節.C#呼叫LUA 資訊"))
        {
            testCSharp_GoLuaInfor();
        }
    }
}