首页 > 其他分享 >记录一次xlua修复构造函数的经验

记录一次xlua修复构造函数的经验

时间:2023-09-15 18:11:24浏览次数:31  
标签:end 修复 self GetType xlua lua jsonVehicleComponent 构造函数

需求:类型A包含多个重载构造函数(包含参数数量相同但参数类型不同的情况)。

修复方法:像这种修构造函数的lua,会注入到所有符合条件的函数中(参数数量相同的),但可能你只需要修复其中一个,这个时候可以在lua函数内部进行类型判断,来决定时候走热更代码。

local A = function(self,jsonVehicleComponent,checkCollect)
	if jsonVehicleComponent:GetType() == typeof(CS.LitJson.JsonData) then
		--热更代码
		end
		self:A();
	end
end

本来修到这里就完事了,但修后面需求的时候发现了问题:在别的热更代码(lua)中调用了A的构造函数,报错了:

attempt to index local 'self' (a number value)

查出来是走到了上面修复的构造函数A中,由于传入的是lua的基本类型,导致jsonVehicleComponent:GetType()报了空指针,猜测是是C#的GetType()只能检查C#的类型,lua的基础类型调用GetType()会报这个错,后来改成了:

local A = function(self,jsonVehicleComponent,checkCollect)
	if type(jsonVehicleComponent) ~= "number" and jsonVehicleComponent:GetType() == typeof(CS.LitJson.JsonData) then
		--热更代码
		end
		self:A();
	end
end

加上了lua基础类型的判断就好了

标签:end,修复,self,GetType,xlua,lua,jsonVehicleComponent,构造函数
From: https://www.cnblogs.com/mcyushao/p/17705655.html

相关文章

  • 配置 git 提交校验规则以及提交前进行代码的校验和修复
    git篇前言今日分享的话题是配置git提交校验规则以及提交前进行代码lint的校验和修复......
  • Laravel 执行流程(三)之 探索 Application 构造函数
    备注:纯手打的学习笔记,如有错误之处请指正,谢谢。希望大家学的开心!说明:本来应该是说Container类(下)的,不过经过学习,直接看这个类实在不好理解,一会是绑定,一会共享实例,真心不知道说的什么....还是先从程序的入口处,顺藤摸瓜,用到的时候再结合上下文理解,比较容易消化,希望理解,抱歉!OK,从入......
  • JS深入学习笔记 - 第一章.构造函数原型与原型链
    1.构造函数和原型 1.1概述在典型的 OOP语言中(如Java),都存在类的概念,类就是对象的模板,对象就是类的实例,但在ES6之前,JS并没有引入类的概念。在ES6之前,对象不是基于类创建的,而是一种称为构建函数的特殊函数来定义对象和它们的特征。有三种创建对象的方式:对象字面量(constob......
  • 农产品产地重金属污染土壤钝化修复的工作程序
    声明本文是学习GB-T42819-2023农产品产地重金属污染土壤钝化通用技术规程.而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们1范围本文件确立了农产品产地重金属污染土壤钝化修复的工作程序,规定了钝化修复技术应用可行性评估、钝化剂筛选、修复方案编制与实......
  • 最新修复塔罗牌占卜星座运势在线事业爱情塔罗测试源码
    源码介绍:运势测算星座塔罗牌这类源码一直都热度不减,这版非常轻量化,上传解压,填入数据库信息即可用,失效的接口也都已经一一修复。数据库信息全部都已经预设完毕,无需手动分类添加星座词等等。运营成品,搭建即用。图文文档教程手把手教你搭建。支付对接Z支付。PS:这个是最新的修复版,据说......
  • 装饰器双层语法糖三层语法糖以及装饰器修复与有参装饰器
    双层语法糖importtimedefouter(func):defget_time(*args,**kwargs):start_time=time.time()res=func(*args,**kwargs)#只能够统计index函数的时间end_time=time.time()print('执行时间:%s'%(end_time-start_time))......
  • 树莓派 4B 开机红屏修复教程 All In One
    树莓派4B开机红屏修复教程AllInOne树莓派4B掉地上摔了一下,开机后发现绿灯不亮了问题分析摔坏了主办,或SD卡❓开机中途,突然断掉了电源,导致系统引导启动程序出错了❓使用启动引导修复程序❓树莓派4b开机绿灯不亮恢复EEPROM的镜像如果成功,绿色LED指示......
  • 封装的思考(快捷键Alt+insert很重要,千万记住,它还能构造函数)
      这边就是封装的意义,然后操作方式和C++没差多少 然后这里是java封装的语法,看看和C++的区别 接着就是一些快捷键的使用  ......
  • 诊断——口水音与爆音等修复
    先录制一段带有口水音的视频竖条特别明显的就是口水音扫描,回吧噪音显示出来,然后声音修复就可以了爆音这么处理呢也是一样的预设选成强修剪然后扫描能把爆音扫描出来修饰就好了......
  • macOS Ventura 13.5.2 (22G91) Boot ISO 原版可引导镜像下载 (修复零日漏洞)
    macOSVentura13.5.2(22G91)BootISO原版可引导镜像下载(修复零日漏洞)2023年9月7日(北京时间8日凌晨)macOSVentura13.5.2(22G91)发布,此次为安全更新,主要修复了零日漏洞CVE-2023-41064CVE-2023-41061。这些漏洞修复的更新也包含在同日发布的iOS16.6.1、iPadOS......