您的位置:首页 > 编程语言 > Lua

xLua中调用C#中操作方法(无返回值,没有ref out修饰参数 最终修改参数值得方法)

2020-02-18 01:29 435 查看

本人小白,最近在用xLua重构C#代码中遇到了难题,如下:

Vector3[] V3Arr = new Vector3[4]
RectTransform.GetWorldCorners(V3Arr)

就是这样一个方法,Unity官方文档介绍,首先实例化一个Vector3类型的数组,作为参数传入到方法中,执行方法后将调用实例的RectTransform四个点的世界坐标填充到数组中。顺序依次为左下、左上、右上、右下。

我在xlua重构时把这个方法当做传址引用处理了,大概是这样:

local corners = {} --初始化一个数组(lua中对应表)
local void,corners = RectTransform:GetWorldCorners(corners)

一开始准备对照 ref 修饰参数的方法,方法的ref返回值对应xLua的多返回值进行接收的
后来发现一只为空。多亏问了xlua大神才解决的问题,特此记录一下。
这种像填充,或者修改参数的方法,没有返回值。在传参的时候要直接传入C#侧类型的参数
在lua侧先实例化数组,然后再传入到方法中,此时方法就可以正常的修改或填充参数了:

local corners = CS.System.Array.CreateInstance(typeof(CS.UnityEngine.Vector3),4)
RectTransform:GetWorldCorners(corners)

这时打印corners正常填充了四个角的点坐标.

  • 点赞
  • 收藏
  • 分享
  • 文章举报
Er蒙 发布了3 篇原创文章 · 获赞 0 · 访问量 22 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: