博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
09.XLua Lua访问C#中的方法
阅读量:6674 次
发布时间:2019-06-25

本文共 1393 字,大约阅读时间需要 4 分钟。

01.类型信息与泛型方法

[LuaCallCSharp]static class ExtendedMethod{
public static Rigidbody AddComponentRigidbody(this GameObject gameobject) {
return gameobject.AddComponent
(); }}

Lua中通过调用扩展方法的方式来进行间接地调用

local go = CS.UnityEngine.GameObject("SuperCube")go:AddComponentRigidbody();

或者

对于传入Type的第三种重载形式,xLua在Lua API中为我们提供了一个和C#中typeof函数一样的函数
在Lua代码中也可以通过typeof得到类的类型信息

local go = CS.UnityEngine.GameObject("SuperCube")go:AddComponent(typeof(CS.UnityEngine.Rigidbody))go:AddComponent(typeof(CS.UnityEngine.Animator))

类型转换

xLua为我们提供了一个类型转换函数cast,该函数有两个参数:
需要进行类型转换的对象
转换类型的Type对象(使用之前提到的typeof函数得到Type对象)

[LuaCallCSharp]interface IFunkable{
void Fuck();}[LuaCallCSharp]public class Lisa : IFunkable{
public int Coin=666; private int id=100; public void Fuck() {
Debug.Log("Lisa[" + this.id + "] Can Fuck!"); }}[LuaCallCSharp]class WhoerHouse{
public IFunkable GetWhore() {
return new Lisa(); }}
--类型转换local whoerHouse=CS.WhoerHouse();local women=whoerHouse:GetWhore();women:Fuck();print(women.Coin);--将得到的woman对象转换为IFuckable接口类型 cast(women,typeof(CS.IFunkable));women:Fuck();print(women.Coin);

在这里插入图片描述

其中IFuckable和WhoreHouse是该库对外暴露的接口,外部通过调用WhoreHouse的GetWhore方法来得到不同的实现了IFuckable接口的对象

在Lua代码中,我们通过GetWhore拿到了一个woman对象,但是由于不知道woman到底是哪一个具体的实现类,所以直接调用的时候xLua会通过反射的方式来访问该实现类

为了通过IFuckable接口来进行调用,需要在Lua中将得到的woman对象转换为IFuckable接口类型

转载地址:http://ifrxo.baihongyu.com/

你可能感兴趣的文章
3-unit3 高速缓存DNS
查看>>
spark mllib 协同过滤算法,基于余弦相似度的用户相似度计算
查看>>
openwrt 基于qmi的 3G|4G拨号
查看>>
俞敏洪励志语
查看>>
ICU Layout Engine
查看>>
jtds连接sqlserver数据库实例的写法
查看>>
Android中的File文件存储及读取file中的Bitmap
查看>>
AngularJS(1)中的5种服务
查看>>
android编译
查看>>
开源|基于TensorFlow的聊天机器人-ErGo
查看>>
lucene4.0入门1
查看>>
Svn结合hook实现自动更新及多Project管理更新
查看>>
Java中sleep()与wait()区别
查看>>
大型网站架构演变和知识体系
查看>>
Java垃圾回收机制浅谈
查看>>
自定义NSOperation 操作
查看>>
字符编码-- Unicode(1991年)
查看>>
【加密解密】阴符,阴书,字验
查看>>
【加密解密】数据加密标准DES加密(Javascript实现)
查看>>
第三十六讲:tapestry表单组件详解之PasswordField
查看>>