如何让GameObject销毁时无论是否Active过,都调用OnDestroy

news/2025/3/19 11:13:24/文章来源:https://www.cnblogs.com/uwatech/p/18780652

1)如何让GameObject销毁时无论是否Active过,都调用OnDestroy
2)升级到URP画面会提升吗
3)如何用Dynamic Mesh做出在墙上打洞的效果
4)UE可以把烘焙好的光照贴图导出吗


这是第424篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

UWA社区主页:community.uwa4d.com
UWA QQ群:793972859

Asset

Q:请教一个问题,MonoBehaviour的OnDestroy方法,如果这个GameObject的实例化时就是隐藏的,销毁时不会调用OnDestroy方法。我们项目有些核心逻辑是基于这个OnDestroy做的(时间太久远,耦合太多逻辑不好改出去了)。有没有什么办法,可以让这个GameObject销毁时无论是否Active过,都调用OnDestroy。

A:要触发OnDestroy,必须要触发过Awake(Awake可以不明着写出来),通常是被实例化或者第一次激活的时候触发Awake,如果一直处于不激活的状态,那么销毁的时候不会自动触发OnDestroy。所以可以在激活的父节点上主动SetActive一下:

 

感谢旋@UWA问答社区提供了回答

A2:1. 一般一个Prefab本身是点亮的,大部分是里面的某些节点才会隐藏。如果是我说的这种情况,应该是在根Prefab摧毁的时候主动调用一次需要控制调用的子组件。

 

  1. 如果你真的是根Prefab就隐藏的那更简单了:
    (1)做一个工具扫描所有Prefab检查并且修改点亮情况;
    (2)编辑器模式下加载完一个Prefab之后检查是否点亮,如果没有则打印Error。

感谢沈杰@UWA问答社区提供了回答


Rendering

Q1:请问升级到URP之后,画面会提升吗?

A:感觉画面提不提升取决于美术和TA的配合。URP目前做不到你想要一下子就提升画面的需求。

感谢[]@UWA问答社区提供了回答

Q2:那有没有测过同样的场景Build-in和URP哪个性能更好一些呢?

A1:URP,但是URP的Lit比BRP的Standard质量更低点,毕竟是给手机跑的,BxDF估计都是简化到不能再简化的。

感谢高0x@UWA问答社区提供了回答

A2:升级到URP本身不会自动提升画质;和Build-in性能哪个好,也是不一定的,有见过用了URP,性能反而下降的情况。应该说URP肯定有其优势,但要用的好才有提升:URP最重要的是可以根据项目需要定制管线;有SRP Batcher,可以让以前一些不能合批的东西可以合批了,比如SkinnedMesh;内置了后处理等等。

该回答由UWA提供,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/67d78ed53d306f3e9d594e7d


Rendering

Q:请教个问题。我想用Dynamic Mesh做在墙上打洞的效果(类似炮弹炸楼)。目前用Static Mesh转Dynamic Mesh做了Bool以后再转回Static Mesh。不过有个问题是这种Static Mesh缺少Luman Card,造成光照效果挺差的。现在我想把Static Mesh存成Assert再读回来异步Load Assert回来,Spawn Actor。不知道这个方法能不能解决缺Luman Card的问题。

事实上,我最担心的是直接存AssetCreated(NewMesh);和Cast<UMaterial>(StaticLoadObject(UMaterial::StaticClass(), nullptr, TEXT("/Game/Map/Materials/NewMesh")))这种方法就不能解决Luman Card的问题。因为这个过程中我没有做过Cook的事情。

我不太清楚Cook具体干了什么?比如说,是否是算了SDF?缺少SDF是不是就不能做全局光追了?

官方已经公开承认的是Dynamic Mesh转Static Mesh的时候就不会生成Static Mesh的Luman Card,而且直接调Copy to Static Mesh肯定不够的。

针对以上问题,有经验的朋友欢迎转至社区交流:
https://answer.uwa4d.com/question/67cfada63d306f3e9d594e70


Rendering

Q:请问UE可以把烘焙好的光照贴图导出吗?

A1:听说有这么做的,好像是写了工具才能导,本身不能。

感谢战斗@UWA问答社区提供了回答

A2:你要是一行代码都不想写,可以用旧版本引擎,glTF导出插件,有导出Lightmap的选项,但中间不知道为什么EPIC删掉了这个选项。你要想写可以翻一翻,MeshComponent下有个MeshMapBuildData,Lightmap就存在那里。

感谢...@UWA问答社区提供了回答

封面图来源于网络


今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。

UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/901429.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

测序芯片-不同键合工艺对比-flowcell-代加工-外协加工-委外加工-激光代加工-河南郑州-芯晨微纳(河南)

基因测序(包括DNA测序和RNA测序)是研究生命信息的重要方法之一。DNA测序(DNA sequencing,或译DNA定序)是指分析特定DNA片段的碱基序列, 也就是腺嘌呤(A)、胸腺嘧啶(T)、胞嘧啶(C)与鸟嘌呤(G)的排列方式。同理,RNA测序是指分析特定RNA片段的碱基序列,也就是腺嘌呤(A)、鸟嘌呤…

Go语言内存管理机制解析

引言 Go语言以高并发性能和简洁的内存管理著称,其独特的内存分配机制在保证开发效率的同时,实现了接近C/C++的性能。本文将深入剖析Go的内存管理设计,结合内存逃逸、多级缓存池、无锁化分配等核心机制,揭示其高效运作的秘密。 参考文档 https://www.bilibili.com/video/BV1…

HTTP响应拆分漏洞——CRLF注入漏洞

CRLF漏洞 CRLF注入漏洞:web应用没有对用户输入做严格过滤,导致攻击者可以输入一些恶意字符,攻击者向请求行或首部中的字段注入恶意的CRLF,就能注入一些首部字段或报文主题,并在响应中输出。 HTTP报文中,HTTP header之间是由一个CRLF字符序列分隔开的,HTTP Header 与Body…

图案化CCD视觉精密点胶技术-flowcell-代加工-外协加工-委外加工-激光代加工-河南郑州-芯晨微纳(河南)

图案化视觉点胶技术(Patterned Vision Dispensing Technology)是一种结合高精度点胶工艺与机器视觉系统的先进制造技术,能够根据预设的图案或路径精确分配胶水、导电浆料、封装材料等流体,广泛应用于电子封装、微纳制造、生物芯片等领域。技术原理视觉定位:通过高分辨率摄…

充电桩消防火焰检测系统

充电桩消防火焰检测系统的核心在于其强大的识别能力,充电桩消防火焰检测系统一旦检测到火焰或烟雾,系统会立即启动一系列自动响应机制。首先,自动灭火系统会被触发,根据充电桩的具体环境和安全规范,选择合适的灭火方式,如气体灭火或水喷淋系统。这种即时干预能够在火势初…

助你玩转——4G模组Air780EPM的GPIO设计~

本文将结合Air780EPM的硬件架构与软件框架,从管脚分配、电气特性、复用机制、代码开发四个维度,深入解析GPIO设计的全流程要点,为开发者提供从理论到实践的完整技术指南。 一、概述 开发方式:Air780EPM 仅支持 LuatOS 软件开发方式,不支持 AT 指令开发方式。若使用 AT 指令…

【Java】XxlJob入门

xxl-job概念 xxlJob是轻量级的可视化分布式任务调度平台,适用于中小型企业。主要特性如下:简单、动态、轻量级、支持弹性扩容缩容、事件全异步执行、跨语言。 调度中心和执行任务解耦 调度任务支持多种不同场景的路由策略、容错策略、触发策略 运维更便捷环境准备和部署 Gith…

快速掌握!4G模组:Air780EPM 天线设计说明

天线设计,也是4G模组应用中最容易踩坑的地方。今天主要分享讨论Air700ECQ/EAQ/EMQ系列模组,天线管脚到4G天线之间的电路设计和走线规则。 Air700ECQ/EAQ/EMQ模组属于Cat.1 bis R13架构,天线架构精简为单天线架构,去掉了分集接收天线,因此只需要一根天线。 知识点: Cat.1 …

24级数应二班课堂作业2

2024010068 刘晓津 几年几月多少天year = int(input("请输入年份: ")) month = int(input("请输入月份: "))if month in [1, 3, 5, 7, 8, 10, 12]:days = 31 elif month in [4, 6, 9, 11]:days = 30 elif month == 2:if (year % 4 == 0 and year % 100 != …

简谈如何用纳米压印技术制备测序芯片-测序芯片-flowcell-代加工-外协加工-委外加工-激光代加工-河南郑州-芯晨微纳(河南)

利用纳米压印技术(Nanoimprint Lithography, NIL)制备测序芯片(如DNA测序芯片或生物传感器芯片)的核心在于通过高精度模板在基材上高效复制纳米级结构,从而构建用于捕获、固定或检测生物分子的功能表面。以下是具体步骤和关键技术要点:测序芯片的功能需求 测序芯片通常需…

SpringSecurity5(7-会话管理)

Spring Security 的会话管理可控制用户身份验证的会话行为,支持并发会话限制、防止会话固定攻击(Session Fixation)、会话超时控制等。可结合 Redis 实现分布式会话共享,提升安全性与用户体验,适用于高并发应用场景。会话管理 http.sessionManagement()invalidSessionUrl(…

jstat--java内存分析工具

jstat利用JVM内建的指令对应用程序的资源和性能实时的命令行监控,包括堆大小和垃圾回收状况。命令## n1 刷新时间 n2 总共输出次数 jstat -gcutil pid n1 n2说明S0 :s0已使用的容量占比 S1:s1已使用的容量占比 E:eden已使用容量占比 O:老年代已使用容量占比 CCS:压缩类…