一、Lua调用CS脚本

1、创建对象

c#
var newGameObj = new UnityEngine.GameObject();
lua
local newGameObj = CS.UnityEngine.GameObject()

2、访问静态成员

--属性
CS.namespace.claseName.staticField
CS.namespace.claseName.staticField = changedValue
--方法
CS.namespace.claseName.staticFunction()

3、访问对象成员

--属性
obj.field
obj.field = value
--方法
obj:function()

4、参数列表

普通参数是一个传入参数

ref使用时作为传入参数,返回时作为一个返回值

out使用时不是参数,作为一个返回值

C#端

namespace Net.Realmoon.Test
{

    public class XluaTest
    {
        public void Add(int a, int b, out int c)
        {
            c = a + b;
        }
        public void ChangeAB(ref int a, ref int b)
        {
            int temp = a;
            a = b;
            b = temp;
        }
    }
}

Lua端

xluatext = CS.Net.Realmoon.Test.XluaTest()

a = 10
b = 20

c = xluatext:Add(a, b)

print(c)

a, b = xluatext:ChangeAB(a, b)

print(a, b)

5、枚举

枚举的使用与静态字段一致

6、委托和事件

delegat:

使用+-可以对委托进行增加和删除方法,使用()来对委托进行触发

--为委托增加回调事件
function AddDelegate(delegate, fun)
    if delegate == nil then
        delegate = fun
    else
        delegate = delegate + fun
    end
    return delegate
end
--为委托移除回调事件
function RemoveDelegate(delegate, fun)
    if delegate == nil then
        return delegate
    else
        delegate = delegate - fun
    end
    return delegate
end
--触发委托
function TriggerDelegate(delegate)
    if delegate == nil then
        return
    else
        delegate()
    end
end

event

--为事件增加回调
xluatext:RunAction("+", luaDel)
--为事件移除回调
xluatext:RunAction("-", luaDel)

最后修改日期: 2023年10月30日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。