Lua语法调用C#语法

lua语法调用C#语法只要区分调用的C#方法是静态与非静态即可

若lua调用的是C#静态方法使用“ . ”调用

若lua调用的是C#非静态方法使用“ : ”调用

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using XLua;

[LuaCallCSharp]
public class LuaManager : MonoBehaviour {
    public static LuaManager Instance;
    private void Awake()
    {
        Instance = this;
    }
    //新键lua对象
    private LuaEnv luaEnv;
    //创建一个lua表,用于传递数据
    LuaTable scriptEnv;
    void Start()
    {
        luaEnv = new LuaEnv();
        //创建一个lua表
        scriptEnv = luaEnv.NewTable();
        //创建lua元表
        LuaTable meta = luaEnv.NewTable();
        //向元表中添加元数据
        meta.Set("__index", luaEnv.Global);
        //在lua脚本中直接用self就可以调用this,即当前当前cs脚本对象
        scriptEnv.Set("self", this);
        //设置元表
        scriptEnv.SetMetaTable(meta);
        LoadLuaScript();
    }
    //加载lua脚本的方法
    public void LoadLuaScript()
    {
        //动态加载lua脚本
        string luaPath = Application.dataPath+ "/LuaScriptTest.lua.txt";
        string luaText = File.ReadAllText(luaPath);
        luaEnv.DoString(luaText, "LuaManager", scriptEnv);//执行lua脚本
    }
public void FeiJingtai(string str)//非静态方法
    {
        print(str);
    }
public static void Jingtai(string str)//静态方法
    {
        print(str);
    }

lua脚本

CS.LuaManager.Instance:FeiJingtai("非静态")
CS.LuaManager.Jingtai("静态")

输出结果为

非静态
静态


你可能感兴趣的:(Lua语法调用C#语法)