xlua-lua脚本中访问C#API

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
/*
 * Author:W
 */
public class LuaCallCsharp : MonoBehaviour
{
    private LuaEnv luaEnv;
    // Start is called before the first frame update
    void Start()
    {
        luaEnv = new LuaEnv();

        luaEnv.DoString("require 'LuaCallCSharp'");

    }

    private void OnDestroy()
    {
        if (luaEnv != null)
            luaEnv.Dispose();
    }
}

xlua-lua脚本中访问C#API_第1张图片

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ManagerTest : MonoBehaviour
{
    public int a = 9;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    public void Test()
    {
        Debug.Log("Manager Test");
    }
}

lua脚本:调用C# API

--使用C# new对象方法创建游戏对象
CS.UnityEngine.GameObject("LuaGameObject")


--使用C#的静态属性与方法
print(CS.UnityEngine.Time.deltaTime)

--注意:对于经常使用的对象,可以声明为变量,这样一方面为了提高编写效率,另一方面可以提高性能
local gameobject = CS.UnityEngine.GameObject

local camera = gameobject.Find("Main Camera")
camera.name = "Lua Camera"
local light = gameobject.Find("Directional Light")
light.name = "Lua Light"


--使用C#的成员属性和方法
local manager = gameobject.Find("Manager")
--注意:推荐使用冒号访问成员方法
local managerTestCom = manager:GetComponent("ManagerTest")
managerTestCom:Test()
--不推荐使用点号访问成员方法,因为需要传入自身对象
managerTestCom.Test(managerTestCom)

--使用点号访问成员属性
print(managerTestCom.a)



运行结果截图如下:
xlua-lua脚本中访问C#API_第2张图片
xlua-lua脚本中访问C#API_第3张图片

你可能感兴趣的:(Unity,xlua)