Unity如何使用Xlua框架访问Lua可变函数
Test.lua.txt
Test = {}
function print(...)
    for i,v in ipairs{...}
    do
        print(i,v)
    end
end

请问,这一种使用Xlua应该怎么访问,我尝试使用委托

private delegate void Delegate_T(params object[] o);
private del Delegate_T;
private LuaTable scriptEnv;
scriptEnv.Get("SelfTest", out d); 

但是会报出一个错误,并且截断我所有代码

 InvalidCastException: This type must add to CSharpCallLua: LuaBehaviour+del
XLua.ObjectTranslator.getDelegate (XLua.DelegateBridgeBase bridge, System.Type delegateType) (at Assets/XLua/Src/ObjectTranslator.cs:376)
XLua.ObjectTranslator.CreateDelegateBridge (IntPtr L, System.Type delegateType, Int32 idx) (at Assets/XLua/Src/ObjectTranslator.cs:447)

0

1个回答

我智障了 = = 报错信息里面明明给了解决方法,

只要在委托上面加上CsharpCallLua就可以使用可变数组了

  [CSharpCallLua]

1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
XLua框架搭建——Unity的Update循环
unity的生命周期中有一个Update函数,是游戏的循环,类似的还有FixedUpdate和LateUpdate等,在c#中继承monobehaviour后unity就会调用对应的函数,根据我们前面的设计《XLua框架搭建——LuaBehaviour设计》,我们也可以获取对应的update函数,然后进行调用,但是在lua中是mgr类的非生命周期下的类呢? 无论是c#还是lua都会有这个问题,对...
Unity实验室之XLua调用C#程序
介绍 xLua是腾讯在github上的一个开源项目(下载链接),主要解决热更的问题,是和C#(Unity,.Net,Mono)结合的解决方案。支持android,ios,windows,linux,osx等平台。目前已经有许多成熟产品应用案例使用了xLua.本文主要介绍xLua如何调用C#脚本。 创建游戏对象 -example.lua.txt local obj1 = CS.Uni...
ToLua#--lua调用C#泛型结构以及遍历
ToLua#并不支持直接调用C#中的泛型结构,需要调用C#中的泛型结构时考虑一下解决方法。
使用Xlua 在Unity调用lua脚本 --------初级
首先到GitHub上下载xlua  https://github.com/Tencent/xLua    这个是腾讯推出的 下载完之后解包然后把xlua中Assets文件下的两个文件夹拖入unity中Assets文件下 然后里面有一些功能实例,可以看看,在这里就不细说了. 创建一个脚本,然后在创建一个 lua脚本,创建脚本前,我要说一下以免有些初学者不知道,unity呢!识别不了lua脚...
UGUI的xlua例子
随着腾讯开源了xlua 大部分热衷于热更新的程序爸爸开始了探索新技术之旅,小编也没有例外。 在这里奉上简单的ugui+xlua的小栗子,以供大家参考
Xlua怎样调用Unity中的API
因工作需要,研究了一下xlua怎样在lua中调用unityAPI, 在lua中想要调用api需要获得这个类的命名空间,如果是自己写的类,要用CS.类名来调用类, 如果是静态方法,用点来调用该方法,如果是普通方法(非静态方法)用:来调用该方法。
XLua+Unity热更新详细步骤
1.首先在Unity中导入我们的XLua框架Assets目录下的Plugins和XLua两个文件。 2.把Tools文件夹放到与Assets同级的位置。 3.把1和2做完之后就可以在Unity中设置宏定义了,如图: 宏定义设置:在UNITY中添加HOTFIX_ENABLE宏,打开步骤(在Unity3D的File->Build Setting->Scripting Define S...
Unity XLua 官方教程学习
一、Lua 文件加载 1. 执行字符串 using UnityEngine; using XLua; public class ByString : MonoBehaviour { XLua.LuaEnv luaEnv ; // Use this for initialization void Start () { luaEnv = new XLu...
XLua框架搭建——编辑器选择
xlua开源代码地址:https://github.com/Tencent/xLua 新项目准备使用xlua来进行游戏开发,我进行这方面的技术研究及框架搭建。项目选择这套主要是因为对c#的热修复功能,xlua作为一套lua框架,其他lua框架能实现的功能理论上xlua都是能实现的。对于我们项目来说,规划是lua用来编写UI相关的业务逻辑,核心战斗这块还是使用c#来编写,如果到时候出了bug,也可...
XLua框架搭建——LuaFunction分部类扩展
Lua中函数在c#中的映射是LuaFunction,对函数的调用一般是用call来调用,但是官方认为这个效率上存在一定的GC,所以提供了Action和Func,其中Action是调用,没有返回值,而Func是有返回值的。 在实际使用时发现少了一个函数,就是我调用的是无参函数,但是希望能拿到返回值,官方的代码里并没有相关函数,但是阅读代码可以发现,这是一个分部类,官方也鼓励我们自己扩建相关函数,看...
6. Unity3d Lua框架 - xLua - UIManager UI管理系统:提供UI操作、UI层级、UI消息、UI资源加载、UI调度、UI缓存等管理
UIManager.lua – UI管理系统:提供UI操作、UI层级、UI消息、UI资源加载、UI调度、UI缓存等管理 – 注意: – 1、Window包括:Model、Ctrl、View、和Active状态等构成的一个整体概念 – 2、所有带Window接口的都是操作整个窗口,如CloseWindow以后:整个窗口将不再活动 – 3、所有带View接口的都是操作视图层展示,如CloseVie...
XLua框架搭建——Lua定时器的实现
前面介绍了lua中update的实现,利用update,我们可以实现lua的定时器类。 与c#定时器原理一样,我们需要提供注册函数与反注册函数,然后利用update注册对应的update循环,在update循环里获取当前事件,然后遍历当前的注册列表,比较当前时间和定时器的注册时间,如果到了指定时间,就进行函数调用,同样,函数注册时需要传递自身self。 注册函数类似如下 function...
[Unity XLua]热更新XLua入门(一)-基础篇
Aladdin_XLua前言前段时间腾讯开源了一个内部热更框架XLua在Unity开发群里引起一阵热议,也受到广大开发者的热捧,然后我当然也抱着好奇的心去学习学习。后面也会将扩展之后的工程放在git上,大家一起学习交流!在此感谢XLua作者创造出这么好用的框架!相关链接 XLua源码 C#->Lua开源工具 可以将C#转化成lua并且具有 相关介绍文章 https://www.oschina.n
XLUA与(Unity中)C#所有类型交互实例大全--1
在一开始,我们想来创建一个C#代码,作为与Lua交互使用,就命名为NewTest好了 using System.Collections; using System.Collections.Generic; using UnityEngine; using XLua; [Hotfix] public class NewTest : MonoBehaviour { void S...
XLua框架搭建——lua 消息分发
消息分发对于模块解耦是一个很好的方案,前面的博客中介绍过如何在c#中写一个消息分发,以及消息分发的原理,有需要的可以去看原来的文章游戏脚本事件分发,同时在前面的lua后期接入笔记里也说过利用c#的消息分发来实现lua端的消息分发,见文章项目后期Lua接入笔记06–按钮事件监听及消息分发,但这是后期的时候,lua的使用不多,性能上的考虑也比较少,问题不是很大,现在搭建框架,需要大量使用lua,那么l...
unity中调用Lua脚本中的全局函数和全局变量的值
步骤:1 把LuaInterface中的LuaInterface.dll复制到unity的Assets文件夹下的Plugins文件夹中。LuaInterface下载地址:http://files.luaforge.net/releases/luainterface/luainterface或者https://pan.baidu.com/s/1w_Rji8la-zAJUjuNtYJzFw2 用记事本...
Unity_Xlua_lua代码调用UnityUI组件代码
Unity_Xlua_lua代码调用UnityUI组件代码.
2. Unity3d Lua框架 - xLua - Lua面向对象设计 静态类 数据结构类 消息系统 单例类 可更新脚本 可更新单例脚本
BaseClass.lua --[[ -- Lua面向对象设计 --]] --保存类类型的虚表 local _class = {} -- added by wsh @ 2017-12-09 -- 自定义类型 ClassType = { class = 1, instance = 2, } function BaseClass(classname, super) assert(t...
使用xlua 进行Unity3D 热更新-2
一接触到新的东西,总想看看背后的原理是怎样的,xlua也不例外。于是试着写了一下,算是了解底层的实现原理,以后不用xlua也能有借鉴的地方。xlua的热修复原理实际上是在 C# 编译成中间语言的时候,进行代码的插入这部分用到了 Mono.Ceil 库来操作,当然还有其他很多的库也可以实现。 因为是在IL的部分插入,因此直接支持IL2CPP直接进入主题已知有一个类12345678910public ...
基于改造后的NGUI与Lua实现的unity热更新框架(一)
经过了在公司几天的学习,对于项目框架开发流程有了了解: 1、先把UI界面搭建好,然后在相应的地方写好事件,做成预制体,使用Build UI build一下,生成对于的配置文件 2、在viewdefine文件中定义一个ui ,如:[TEST_PROJECT] = "ui_project",然后在定义放置ui的容器,如:[viewdefine.TEST_PROJECT] = contain
xLua笔记(热更新框架设计之Xlua基础)
热 更新的 基本原理  C#脚本不能直接热更新的原因: 下载的图片与模型都没有问题,如果是Unity逻辑代码,无论是以前的 Mono AOT 还是后面的il2cpp , 都是编译成native code, IOS下是运行不起 来的。  解决方法 就是不用native code ,改为解释执行。包括Xlua在内所有热更新就是这 个思路来实现。   Xlua插件的GitHub 下...
XLua:C#访问Lua中的table的几种方式
C#访问Lua中的全局变量 C#代码 luaEnv = new LuaEnv(); luaEnv.DoString("require 'CSharpCallLua'"); //获取Lua中的全局变量 string name = luaEnv.Global.Get<string>("name&am
Unity XLua最新插件
Unity XLua最新插件 下载以后解压复制到Asset目录下就可以了
XLua框架搭建——LuaBehaviour设计
由于Unity的生命周期问题,一般来说在Lua端都要实现相同的生命周期调用,以便和unity进行衔接。 在官方第二个示例中,有个LuaBehaviour的脚本,演示了如何在lua中实现unity的生命周期,原理就是获取相关函数,然后在c#中被调用时调用对应的lua函数即可。 一开始使用c#代码创建一个LuaTable,并设置__index指向全局。 LuaTable meta = lu...
XLua框架搭建——xLua常用库集成
官方文档里提供了一个集成第三方库的教程,对于日常开发,其实我们经常需要引入一些第三方库,如何加入到项目里,就需要参考这个文档了。 一般来说,游戏开发需要用到的库就那么几个,对此,作者为我们集成了几个第三方库,这个集成独立于xlua,具体的见地址https://github.com/chexiongsheng/build_xlua_with_libs,作者集成了lua-protobuf(以前是pb...
XLUA与(Unity中)C#所有类型交互实例大全--2
4.委托的调用 接这上次的我们继续,这次在Lua中访问调用委托,由于委托类型和泛型一样,都是C#中的,Lua中没有,所以很难直接访问,没有找到较好的方法,这里我建议在C#中提前为了热更新方案先写好委托操作的相关函数,代码如下 using System; using System.Collections; using System.Collections.Generic; using Unit...
XLua学习---C#访问Lua(变量,表,函数)
首先通过LuaEnv.Dostring()获取到Lua中的内容。然后通过LuaEnv.Global.Get<T>方法可以对其中的属性进行获取。    LuaEnv env=new LuaEnv();         env.DoString("require 'CSharpCallLua' ");//lua文件名 1.获取全局变量的基本属性类型 例:Lua脚本   leve...
Unity3d中XLua简单运用
前段时间学习了XLua的教程,发现非常的好用,下面用一个简单的例子来使用一下Xlua,将一个加法运算的程序 热更新成减法运算 首先,我们写一个简单的加法运算 using System; using System.Collections; using System.Collections.Generic; using System.Text; using UnityEngine; using ...
Xlua与C#(Unity)的相互读取
** 一.读取lua文件 using System.Collections; using System.Collections.Generic; using UnityEngine; using XLua; using System.IO; public class AutoLoader : MonoBehaviour { // Use this for initialization vo...
[Unity3D热更框架] LuaMVC简介
1.什么是LuaMVC   从工作以来一直从事工业三维仿真软件/AR软件的开发,每个项目开发周期短,项目从Demo到完(huang)结(le)时间较为紧凑,因此需要一个便捷的开发框架作为支撑,以适应不同的项目需求,而且需要尽可能覆盖多个终端( web/android/ipad)的需求。   LuaMVC是根据以上需求基于PureMVC框架和XLua热更新解决方案开发的支持热更的M
使用xlua 进行Unity3D 热更新
xlua, 不但可以做纯lua的逻辑更新,还可以做 C# 代码的bug hotfix.就是可以在保持项目使用C#逻辑开发的前提下,出现bug后使用lua来修复.听起来很棒棒.github地址 : xlua试用一下之后,发现xlua的hotfix原理也很简单, 就是通过反射取出打上了 [hotfix] 标记的类,然后对需要fix的函数执行下列伪代码1234567void Start(){  if(_...
关于xlua与unity交互中的坑
单纯的lua 关于if中相关的报错 检查自己的if是否为 相应的语法格式 --格式一 if(条件) then end --格式二 if (条件) then elseif(条件) then else end     具体错误是你会发现判断会跳过你的这个判断   【解决办法】:  检查条件中的问题特别是 判断条件为   string 判断 string     u...
XLua实现基于MVC框架的热更新架构
1、将XLua的包导入工程 2、编写程序的主入口脚本GameMgr、用于启动Lua程序 `public class GameMgr : MonoBehaviour { private void Awake() { gameObject.AddComponent<LuaMgr>(); } pr
xlua热更新派生类的方法时,调用其中基类方法
解决问题:当使用xlua做热更新时,遇到热更新派生类的方法时,需要调用该方法中基类的方法 示例代码: 1、基类代码using UnityEngine; using System.Collections; using XLua; using System;[Hotfix] public class HotfixTest : MonoBehaviour { protected LuaEn
unity热更新(一)导入Xlua插件
1.进入github.com下载腾讯的xlua包上面下载的是最新版本,也可以通过releases下载,但下载的可能不是最新版本2.解压下载的压缩包3.新建unity项目4.将xlua包里Assets文件夹里的文件复制到unity项目Assets文件夹里即可5.在unity里运行lua程序using System.Collections; using System.Collections.Gener...
一个简单的Unity游戏开发框架(lua自更新)
已经包含或者预计以后包含的内容如下: tolua manager管理 网络框架(http、socket) assetbundle更新(增量打包) ugui lua 自定义控件 lua etc… 代码已经放入GitHub上:https://github.com/AdamWu/PixelWorld对应服务器代码:https://github.com/AdamWu/pyGameServer
XLua框架搭建——lua端改造c#现有类
在Lua端使用unity的一些类时会有一些比较大的性能消耗,比如我们常用的位置赋值操作 transform.position = CS.UnityEngine.Vector3(0,1,0); 如果进行性能测试会发现在性能消耗上需要十多毫秒,关于如何进行性能测试,可以参考官方文档《XLua性能分析工具》,后面也会有相关的文章。对于这个性能消耗,一个这么简单的操作,而且类似这样的赋值语句是一个...
Unity热更之旧项目救星——Xlua热补丁修复
Xlua官方开源地址:https://github.com/Tencent/xlua首先先说明下,因为我们的项目是比较旧的项目,所以当时并未使用任何热更技术,所有的代码都是用c#写的,导致到项目后期才忽然想使用热更就非常困难了。当时研究了不少热更框架发现大部分都无法再弥补过去的疏忽,直到出现了Xlua,作者宣称项目可以继续由C#编写,只有在热更修复的时候才是用lua,我觉得有戏就研究了下。根据方法...
Xlua使用C#中第三方库:DoTween
lua中加上DOtween = CS.DG.Tweening.DOTween 就可以调用了 如果要使用extension,在这里面 [LuaCallCSharp] public static List LuaCallCSharp = new List() {}需要添加一堆下面这中代码
Unity中XLua开发之使用C#加载lua脚本
该代码是基于XLua,XLua插件下载链接:https://github.com/Tencent/xLua代码如下:using System.Collections; using System.Collections.Generic; using UnityEngine; using XLua; public class MyHelloWorld : MonoBehaviour { p...
相关热词 c#串口测试应用程序 c# 匹配 正则表达式 c#防止窗体重绘 c#读写txt文件 c#挖地雷源代码 c#弹框选项 c# 移除 队列 c# 密码写入配置文件 c# 获取可用内存大小 c# 嵌入excel编辑