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文件中使用指针,将相关的代码注释掉即可!