Uniyt热更新——LuaFrameWork学习(三)判断unity里对象为空

2023-11-06

在游戏制作过程中我们经常会Destroy一些没用的GameObject,那么在ulua里我们怎么样来判断我们的引用被Destroy了呢,这里要感谢阿盟哥,他已经为我们解决了这个问题,在他写的 Global.lua里,代码如下:
function IsNil(uobj)
    return uobj == nil or uobj:Equals(nil)
end

只要将要判断的对象传进来就行了。好,我们来看个例子吧,lua代码如下:

function Main()					
	local GameObject =  UnityEngine.GameObject;
	
	local go = GameObject('go');
	
	local node = go.transform;
	node.position = Vector3.one;
	GameObject.Destroy(go);
	if go:Equals(nil) then
		print("go is nil");
	end
	--[[print('gameobject is :'..tostring(go));--]]
end

function IsNil(uobj)
    return uobj == nil or uobj:Equals(nil)
end
我这个是在LuaFrameword框架下运行的,结果不用说大家都知道就是打印 go is nil 这句话。

原先我的判断代码不是这样的我的是用go==nil 来判断的但是结果是false,而用go:Equals(nil)的结果是true;这个让我一时不知道是怎么一回事,后来通过百度让我想到了引用;引用变量存储的是对象的内存地址,对象销毁时内存还没有回收,也就是说go存储原来的内存地址,那他就不会等于nil了;而Equals是比较两个对象的状态,所以go == nil 是false,go:Equals(nil)的结果是true。

OK,今天就到这里,有兴趣的朋友可以去这里看看或许里面有你想要的  http://bbs.ulua.org/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Uniyt热更新——LuaFrameWork学习(三)判断unity里对象为空 的相关文章

  • Java 中记录与类的 hashCode() 和 equals() 的默认实现

    尝试使用示例代码来检查默认行为equals and hashCode for record vs class 但它的行为似乎有所不同record相比于class 这是代码示例record and class public class Equ
  • 如何访问废弃的函数参数?

    在 Lua 中 调用带有多余参数的函数将简单地丢弃这些参数 有没有可能与debug库来访问这些被丢弃的参数 我不是在寻找可变参数函数 function test local info debug getinfo 1 u print info
  • 十六进制常数 = 格式错误的数字?

    我有一个 Lua 脚本 我试图在其中使用十六进制数字 0x 如果我使用官方 Windows 二进制文件在控制台中运行此脚本 它可以正常工作 但是如果我在我的应用程序中运行它 简单的 dofile 我得到 malformed number n
  • Lua:冒号符号、“自我”和函数定义与调用

    我对定义 调用 Lua 函数时使用的冒号表示法感到非常困惑 我以为我已经明白了 直到我看到这段代码 function string PatternSafe str return str gsub pattern escape replace
  • 什么更快?循环或多个 if 条件

    我想知道什么更快 是只用一条指令 即 1 1 执行 9 次 for 循环还是执行 9 个 if 条件时 我认为 if 更快 因为您不需要检查循环中的指令 它应该几乎相同 因为for循环本质上是检查if条件为真并运行一段代码 非常类似于if声
  • 如何实现 hamcrest 匹配器

    我想运行这行代码 assertThat contextPin get equalTo pinPage getPinObjFromUi 但我想打印到日志中以提供信息 这意味着我可以知道哪些字段不相等 所以我想到了实现一个匹配器 我用谷歌搜索过
  • lua http套接字超时

    LuaSocket HTTP 模块文档说可以在 HTTP 连接上设置超时 可以设置以下常量来控制 HTTP 模块的默认行为 PORT 用于连接的默认端口 PROXY 用于连接的默认代理 TIMEOUT 设置所有I O操作的超时时间 USER
  • 如何在aerospike中获取ttl为-1的记录集?

    我在aerospike中有很多记录 我想获取ttl为 1的记录 请提供解决方案 只是为了澄清 设置TTL 为 1 https github com aerospike aerospike client go blob master docs
  • Lua-迭代嵌套表

    我已经学习 Lua 几个星期了 这一次又一次成为我的症结所在 我尝试阅读有关该主题的帖子和书籍 我使用 Lua 查询软件监控系统 Nimsoft 我的数据以表格形式返回给我 我不会发布整个输出 但这里有一个我认为可以描述结构的片段 表参考是
  • lua_resume 的 from 参数的含义

    From Lua 5 2 参考手册 http www lua org manual 5 2 manual html lua resume int lua resume lua State L lua State from int nargs
  • 如何在 Lua 中实现 OO?

    Lua 没有内置对 OO 的支持 但它允许您自己构建它 您能否分享一些实现面向对象的方法 请为每个答案写一个例子 如果您有更多示例 请发布另一个答案 我喜欢将 OOP 视为容器 对象 内的数据封装以及可以使用该数据完成的操作子集 还有很多内
  • 确定已编译Lua的编译器版本

    我有一些已编译的 LuaQ 我需要确定用于编译它的确切版本 有什么可能的方法吗 编译的脚本在文件开头有一个标头 4 bytes signature x1bLua 1 byte version 0x51 1 byte format 1 byt
  • lua中的权限问题

    是否需要在 corona build settings 中设置一些特定权限才能将高分永久保存在文件中 每次运行代码时都会出现 权限被拒绝 的错误 如何纠正这个错误 这是我尝试过的代码 function read score local f1
  • equals 和 hashcode 的不同字段

    我同意这篇文章的声明在Java中重写equals和hashCode时应该考虑哪些问题 https stackoverflow com questions 27581 overriding equals and hashcode in jav
  • 如何在 emacs lua-mode 中配置缩进?

    完整的 emacs 新手在这里 我在 Ubuntu 上使用 emacs 23 1 1emacs 入门套件 https github com technomancy emacs starter kit 我主要在 lua 模式下工作 安装了pa
  • 在Luasocket中,在什么条件下,即使在select告诉它可以安全读取之后,accept调用也可以阻塞?

    卢阿索基特select http w3 impa br diego software luasocket socket html select函数应该告诉何时可以在不阻塞的情况下读取套接字 它显然也可以用来告诉服务器套接字何时准备好接受新连
  • 如何使用“instanceof”实现泛型的“equals”方法?

    我有一堂课接受泛型 我想覆盖equals以一种不尴尬的方式 即看起来干净并且代码量最少的东西 但对于非常一般的用例 现在我有这样的事情 public class SingularNode
  • 使用 equals 方法比较两个对象,Java

    我有一个对象数组 我想将它们与目标对象进行比较 我想返回与目标对象完全匹配的对象的数量 这是我的计数方法 public int countMatchingGhosts Ghost target int count 0 for int i 0
  • 如何在 Lua - Lightroom 插件中使用 HMAC

    首先我要提的是我对 Lua 真的很陌生 如果你认为我的问题太愚蠢 请耐心等待 这是我的要求 我需要使用 HMAC sha256 进行 Lightroom 插件开发 因为我使用它是为了安全 我试图使用这个但没有运气https code goo
  • Equals 和 GetHashCode 方法不一致

    读完这个问题后为什么 int 和 sbyte GetHashCode 函数生成不同的值 https stackoverflow com questions 12501979 why do int and sbyte gethashcode

随机推荐

  • Python+xlwings操作Excel实战

    Excel是全世界最普及最强大的办公软件 应该没有之一 excel就相当于是一只老虎 python相当于是一双翅膀 两者结合将产生 如虎添翼 的效果 好了 不卖关子了 今天我们要跟大家说到的是excel xlwings xlwings是一个
  • 数据库架构演变过程

    背景 在互联网初创时期 企业往往采用单体架构去搭建自己的应用系统 但是 随着企业的不断壮大 系统访问量不断随之上升 数据量也急剧增长 数据的存储是首先要解决的问题 在这个大数据时代 数据就是企业的命根子 数据库的单体架构很难满足数据的存储
  • 未能加载基类“DevExpress.XtraEditors.XtraForm”。请确保已引用该程序集并已生成所有项目

    遇到上述问题 在网上查找了一下解决方案 在此记录 https www cnblogs com liyanwei p 4389396 html
  • JavaScript学习三 特殊对象

    数组 什么是数组 数组是一种特殊的对象 和普通对象功能相似都是用来存储值的 但是有一点不同 数组的属性名称为索引 index 从0开始 属性值称为值 数组的增删改查 创建数组 var a new Array 使用字面量 创建 var a1
  • 我给鸿星尔克写了一个720°看鞋展厅

    最近因为鸿星尔克给河南捐了5000万物资 真的是看哭了很多的网友 普通一家公司捐款5000万可能不会有这样的共情 但是看了鸿星尔克的背景之后 发现真的是令人心酸 鸿星尔克2020年的营收是28亿 但是利润却是亏损2个亿 甚至连微博的官方账号
  • 云服务器可以做虚拟主机吗,云服务器可以做虚拟主机吗

    云服务器可以做虚拟主机吗 内容精选 换一换 弹性公网IP申请成功后 将弹性公网IP绑定到弹性云服务器 裸金属服务器 虚拟IP 弹性负载均衡 NAT网关等资源上 可实现与公网的连接 绑定弹性云服务器 裸金属服务器 虚拟IP在 弹性公网IP 界
  • Linux下crontab命令的用法:sudo crontab -l

    cron 是linux系统下一个自动执行指定任务的程序 cron服务是linux的内置服务 但它不会开机自动启动 可以用以下命令启动和停止服务 Linux代码 sbin service crond start sbin service cr
  • android:inputType属性和setInputType()方法参数对应整理

    以密码类型 password 为例 android inputType属性
  • 服务器使用必备条件、操作步骤及实践步骤详解

    一 服务器使用必备条件 1 网络连接 服务器必须具备稳定的网络连接 以便与外部网络进行通信 这通常需要配置正确的网络接口和IP地址 2 硬件配置 服务器的硬件配置包括处理器 内存 存储和I O设备等 需要根据服务器的用途和需求选择合适的硬件
  • fabric1.0之cryptogen讲解

    一 工具定义 Cryptogen是hyperleder fabric提供的为网络实体生成加密材料 公私钥 证书等 的实用程序 简单来说就是一个生成认证证书 x509 certs 的工具 这些证书代表一个身份 并允许在网络实体间通信和交易时进
  • 下拉框控制当一个选中时另一个值随着变化且不可选

    推荐阅读 AI绘画关于SD MJ GPT SDXL百科全书 面试题分享点我直达 2023最新面试合集链接 2023大厂面试题PDF 面试题PDF版本 java python面试题 项目实战 AI文本 OCR识别最佳实践 AI Gamma一键
  • 常用的获取日期相关内容的方法

    1 格式化日期的方法 只返回日期 年 月 日 const formateDate val gt const date new Date val const year date getFullYear const month repairZe
  • pycharm利用快捷键,快速注释多行代码的方法分享

    最近在pycharm的新手学习群里 发现有些小伙伴依然在 手工 进行代码的注释 效率较低 下面分享pycharm利用快捷键 快速注释多行代码的方法 可以帮助pycharm初学者加倍提升代码的注释效率 代码注释快捷键 pycharm代码注释的
  • springboot动态数据源用shardingjdbc按时间分表

    1 背景 原有项目架构 springboot mybatis plus dynamic datasource 动态数据源 mybatis plus拓展 druid 连接池 根据业务数据不断增加 需要进行对业务量大的数据表行分表 因为以前的业
  • nacos注册中心面试总结

    1注册中心演变及其设计思想 2 Nacos注册中心架构 3 核心功能 服务注册 Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务 提供自身的元数据 比如ip地址 端口等信息 Nacos Serve
  • jps 命令

    NAME jps Lists the instrumented Java Virtual Machines JVMs on the target system This command is experimental and unsuppo
  • 【Pytorch】第 3 章 :进行数值估计的蒙特卡洛方法

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 芯片跨时钟域同步,即异步处理的理解

    网上有一套资料Clifford E Cummings论文合集 还不错 以下是临时想到的 亚稳态就是时序违反的后果 异步信号肯定有时序违反可能 单bit 源时钟域打一拍 目的时钟域打两拍或者更多拍 多bit fifo方法 原理是格雷码指针判断
  • 《机器学习实战》——第13章 利用PCA来简化数据

    在低维下 数据更容易进行处理 其相关特征可能在数据中明确地显示出来 通常而言 我们再应用其他机器学习算法之前 必须先识别出其相关特征 13 1 降维技术 始终贯穿本书的一个难题就是对数据和结果的展示 这是因为文字图像是二维的 而在通常情况下
  • Uniyt热更新——LuaFrameWork学习(三)判断unity里对象为空

    在游戏制作过程中我们经常会Destroy一些没用的GameObject 那么在ulua里我们怎么样来判断我们的引用被Destroy了呢 这里要感谢阿盟哥 他已经为我们解决了这个问题 在他写的 Global lua里 代码如下 functio