您现在的位置是:首页 >技术教程 >[游戏开发][Unity] Xlua与C#互相调用规则网站首页技术教程

[游戏开发][Unity] Xlua与C#互相调用规则

Little丶Seven 2024-07-22 12:01:02
简介[游戏开发][Unity] Xlua与C#互相调用规则

第一部分:Xlua调用C#

--Lua获取C#类
local GameObjectClass = CS.UnityEngine.GameObject

--使用C#类New新对象
local newGameObj = GameObjectClass('helloworld')
print(GameObjectClass, newGameObj)

--调用C#类的静态方法
local FindObj = GameObject.Find('helloworld')

--读取C#类的静态属性
print(CS.UnityEngine.Time.deltaTime)

--修改C#的静态属性
CS.UnityEngine.Time.timeScale = 0.5

 Xlua调用C#方法

 类型1:无参静态方法调用,无【LuaCallCSharp】标记可以直接调用

//C#代码
public class LuaEventUtility
{
    public static void Init(int value)
    {
        Debug.LogError("value:" + value);
    }
}
--Lua代码
CS.LuaEventUtility:Init(3)

相同方法有参调用成功,但参数压栈失败,尝试了把LuaEventUtility变为静态类,以及标记[LuaCallCSharp]皆无法正确传参

类型2:调用C#对象调用非静态方法

 

 

 类型3:调用C#对象调用非静态方法

调用非静态方法的前提是必须在Lua层

 

 

 

类型2:调用C#类静态方法不需要获取dui'xia

 Xlua向C#方法传方法

类型1:Lua向C#传【不带参】方法

这个没啥好说的,直接传就行了

 类型2:Lua向C#传【带参】方法

这个时候调用会报错,

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。