一、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)
留言