|
一、C#中可变参数方法
public class LuaCallCshap : MonoBehaviour
{
LuaEnv env = null;
void Start()
{
env = new LuaEnv();
env.DoString("require 'LuaCallCsharp'");
}
private void OnDestroy()
{
env.Dispose();
}
}
public class LuaCallCshap : MonoBehaviour
{
LuaEnv env = null;
void Start()
{
env = new LuaEnv();
env.DoString("require 'LuaCallCsharp'");
}
private void OnDestroy()
{
env.Dispose();
}
}
local IsInvoked = CS.IsInvokedClass
local classObj=IsInvoked()--自动调用父类和子类的构造函数
--测试调用C#方法带有params的方法
local intResult= classObj:Method(1,3,"地体格","测i是的")
print("返回值="..intResult)二、C#结构体
//定义结构体
public struct MyStruct
{
public int x;
public int y;
}
public class IsInvokedClass
{
public void Method(MyStruct p)
{
Debug.Log(p.x);
Debug.Log(p.y);
}
}
local IsInvoked = CS.IsInvokedClass
local classObj=IsInvoked()--自动调用父类和子类的构造函数
--测试调用C#方法带有结构体的方法
--定义一个表
myStructTable ={x=1,y=2}
classObj:Method(myStructTable)三、C#接口参数
//定义接口
[XLua.CSharpCallLua]
public interface MyInterface
{
int x { get; set; }
int y { get; set; }
void Speak();
}
public class IsInvokedClass
{
//方法具有接口为参数的
public void Method(MyInterface p)
{
Debug.Log(p.x);
Debug.Log(p.y);
p.Speak();
}
}
local IsInvoked = CS.IsInvokedClass
local classObj=IsInvoked()--自动调用父类和子类的构造函数
--测试调用C#方法带有接口的方法
--定义一个表
myInterfaceTable ={
x=100,
y=200,
Speak=function()
print("lua 中的Speak")
end
}
classObj:Method(myInterfaceTable)四、C#委托参数
//定义委托
[XLua.CSharpCallLua]
public delegate void MyDelegate(int num);
public class IsInvokedClass
{
//方法具有接口为参数的
public void Method(MyDelegate p)
{
//调用委托
p.Invoke(88);
}
}
local IsInvoked = CS.IsInvokedClass
local classObj=IsInvoked()--自动调用父类和子类的构造函数
--测试调用C#方法带有委托的方法
--定义函数
muDelegate =function(num)
print("lua 中定义委托方法。参数num="..num);
end
classObj:Method(muDelegate) |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|