toLua中Lua调用C#中的类

toLua中Lua调用C#:

[7]Lua脚本调用C#中的class

准备工作:打算在Lua脚本中使用Debug,使用lua调用C#脚本,需要绑定LuaState和自定义添加Debug

Lua 复制代码
---
--- Generated by EmmyLua(https://github.com/EmmyLua)
--- Created by TonyChang.
--- DateTime: 2024/5/14 6:55
---
print("----------------------toLua中调用c#脚本-------------------------")


--调用Unity中的类
local object1 = UnityEngine.GameObject("object1")
local object2 = UnityEngine.GameObject("TonyChang")

GameObject  = UnityEngine.GameObject
local object3 = GameObject("object3")


--类中额静态对象可以使用 。 来调用

local TonyChang = GameObject.Find("TonyChang")
print(TonyChang.transform.position.x)

调用的C#自定义脚本

Lua中调用自定义脚本

Lua 复制代码
--使用Unity的Debug来打印
Debug = UnityEngine.Debug
Debug.Log("----------Hello-----------")

Vector3 = UnityEngine.Vector3
--使用 :调用成员方法
TonyChang.transform:Translate(Vector3.right)
Debug.Log(TonyChang.transform.position.x)

--调用继承了MonoBehaviour的类
TonyChang:AddComponent(typeof(TestScripts.Test))

--调用没有继承MonoBehaviour的类
local JackStu = TestScripts.Student("Jack")
JackStu:Speak()

Lua中要调用的自定义类

C# 复制代码
using UnityEngine;

namespace TestScripts
{
    public class Student
    {
        private string _name;

        public Student(string name)
        {
            _name = name;
        }

        public void Speak()
        {
            Debug.Log("my name is " + _name);
        }
    }
    public class Test : MonoBehaviour
    {
        private void Awake()
        {
           Debug.Log("Test.cs is running");
        }
    }
}

运行结果:

调用自定的脚本需要在CustomSettings 新增,并生成warp 文件,才可以在lua中调用。

此处注意:在生成的Debug warp文件时候会报错产生,是因为wrap文件中使用指针,将相关的代码注释掉即可!