zoukankan      html  css  js  c++  java
  • Unity toLua中直接对userdata进行字段/方法拓展

    前言

    C#用的tolualua里面C#对象的userdata,不能方便地新增属性值,只能访问C#对象中已有的字段或函数。

    有时候会感觉不是很方便,这里记录一种方法,可以对lua中的C#对象增加字段(当然增加的字段只能在lua中访问)

    方法

    说明

    这里主要使用了peer表:什么是peer
    我们知道lua与其他语言的交互均以table的操作为基础。假如现在lua中有一个已创建好的c#对象c#_obj,我们现在想在lua中对c#_obj进行扩展,具体的扩展细节暂时不考虑,我们只要考虑我们想要扩展的内容放到哪里比较合适。放到c#_obj对应的metatable中显然不太合适,因为metatable中的内容是所有对象都具备的,而我们现在想扩展的内容是c#_obj这个对象独有的。为了解决这个问题,lua中引入了一个专门的表来存放我们在lua中对其他语言的对象的扩展内容,这个表在tolua中就叫做peer表。c#_obj的metatable的__index指向一个c函数,当访问c#_obj中的一个域的时候,会调用这个c函数,这个c函数会去查找各个关联表,来取得我们要访问的域,这其中就包括对peer表的查询。

  • 相关阅读:
    java Vamei快速教程02 方法和数据成员
    java Vamei快速教程01
    二叉树
    高效通信模型之
    高效通信模型之
    线程间通信与同步
    线程
    进程
    C++面试知识点总结
    windows下UDP服务器和客户端的实现
  • 原文地址:https://www.cnblogs.com/b-sir/p/14632039.html
Copyright © 2011-2022 走看看