打開網(wǎng)易新聞 查看精彩圖片

這是第424篇UWA技術(shù)知識(shí)分享的推送,精選了UWA社區(qū)的熱門話題,涵蓋了UWA問答、社區(qū)帖子等技術(shù)知識(shí)點(diǎn),助力大家更全面地掌握和學(xué)習(xí)。

UWA社區(qū)主頁:community.uwa4d.com

本期目錄:

  • 如何讓GameObject銷毀時(shí)無論是否Active過,都調(diào)用OnDestroy
  • 升級(jí)到URP畫面會(huì)提升嗎
  • 如何用Dynamic Mesh做出在墻上打洞的效果
  • UE可以把烘焙好的光照貼圖導(dǎo)出嗎

Asset

Q:請(qǐng)教一個(gè)問題,MonoBehaviour的OnDestroy方法,如果這個(gè)GameObject的實(shí)例化時(shí)就是隱藏的,銷毀時(shí)不會(huì)調(diào)用OnDestroy方法。我們項(xiàng)目有些核心邏輯是基于這個(gè)OnDestroy做的(時(shí)間太久遠(yuǎn),耦合太多邏輯不好改出去了)。有沒有什么辦法,可以讓這個(gè)GameObject銷毀時(shí)無論是否Active過,都調(diào)用OnDestroy。

A:要觸發(fā)OnDestroy,必須要觸發(fā)過Awake(Awake可以不明著寫出來),通常是被實(shí)例化或者第一次激活的時(shí)候觸發(fā)Awake,如果一直處于不激活的狀態(tài),那么銷毀的時(shí)候不會(huì)自動(dòng)觸發(fā)OnDestroy。所以可以在激活的父節(jié)點(diǎn)上主動(dòng)SetActive一下:

打開網(wǎng)易新聞 查看精彩圖片

感謝旋@UWA問答社區(qū)提供了回答

A2:1. 一般一個(gè)Prefab本身是點(diǎn)亮的,大部分是里面的某些節(jié)點(diǎn)才會(huì)隱藏。如果是我說的這種情況,應(yīng)該是在根Prefab摧毀的時(shí)候主動(dòng)調(diào)用一次需要控制調(diào)用的子組件。

打開網(wǎng)易新聞 查看精彩圖片

2. 如果你真的是根Prefab就隱藏的那更簡(jiǎn)單了:

(1)做一個(gè)工具掃描所有Prefab檢查并且修改點(diǎn)亮情況;

(2)編輯器模式下加載完一個(gè)Prefab之后檢查是否點(diǎn)亮,如果沒有則打印Error。

感謝沈杰@UWA問答社區(qū)提供了回答,歡迎大家轉(zhuǎn)至社區(qū)交流

https://answer.uwa4d.com/question/67d390183d306f3e9d594e7a

Rendering

Q1:請(qǐng)問升級(jí)到URP之后,畫面會(huì)提升嗎?

A:感覺畫面提不提升取決于美術(shù)和TA的配合。URP目前做不到你想要一下子就提升畫面的需求。

感謝[]@UWA問答社區(qū)提供了回答

Q2:那有沒有測(cè)過同樣的場(chǎng)景Build-in和URP哪個(gè)性能更好一些呢?

A1:URP,但是URP的Lit比BRP的Standard質(zhì)量更低點(diǎn),畢竟是給手機(jī)跑的,BxDF估計(jì)都是簡(jiǎn)化到不能再簡(jiǎn)化的。

感謝高0x@UWA問答社區(qū)提供了回答

A2:升級(jí)到URP本身不會(huì)自動(dòng)提升畫質(zhì);和Build-in性能哪個(gè)好,也是不一定的,有見過用了URP,性能反而下降的情況。應(yīng)該說URP肯定有其優(yōu)勢(shì),但要用的好才有提升:URP最重要的是可以根據(jù)項(xiàng)目需要定制管線;有SRP Batcher,可以讓以前一些不能合批的東西可以合批了,比如SkinnedMesh;內(nèi)置了后處理等等。

該回答由UWA提供,歡迎大家轉(zhuǎn)至社區(qū)交流

https://answer.uwa4d.com/question/67d78ed53d306f3e9d594e7d

Rendering

Q:請(qǐng)教個(gè)問題。我想用Dynamic Mesh做在墻上打洞的效果(類似炮彈炸樓)。目前用Static Mesh轉(zhuǎn)Dynamic Mesh做了Bool以后再轉(zhuǎn)回Static Mesh。不過有個(gè)問題是這種Static Mesh缺少Luman Card,造成光照效果挺差的?,F(xiàn)在我想把Static Mesh存成Assert再讀回來異步Load Assert回來,Spawn Actor。不知道這個(gè)方法能不能解決缺Luman Card的問題。

事實(shí)上,我最擔(dān)心的是直接存AssetCreated(NewMesh);和Cast (StaticLoadObject(UMaterial::StaticClass(), nullptr, TEXT("/Game/Map/Materials/NewMesh")))這種方法就不能解決Luman Card的問題。因?yàn)檫@個(gè)過程中我沒有做過Cook的事情。

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

官方已經(jīng)公開承認(rèn)的是Dynamic Mesh轉(zhuǎn)Static Mesh的時(shí)候就不會(huì)生成Static Mesh的Luman Card,而且直接調(diào)Copy to Static Mesh肯定不夠的。

針對(duì)以上問題,有經(jīng)驗(yàn)的朋友歡迎轉(zhuǎn)至社區(qū)交流:

https://answer.uwa4d.com/question/67cfada63d306f3e9d594e70

Rendering

Q:請(qǐng)問UE可以把烘焙好的光照貼圖導(dǎo)出嗎?

A1:聽說有這么做的,好像是寫了工具才能導(dǎo),本身不能。

感謝戰(zhàn)斗@UWA問答社區(qū)提供了回答

A2:你要是一行代碼都不想寫,可以用舊版本引擎,glTF導(dǎo)出插件,有導(dǎo)出Lightmap的選項(xiàng),但中間不知道為什么EPIC刪掉了這個(gè)選項(xiàng)。你要想寫可以翻一翻,MeshComponent下有個(gè)MeshMapBuildData,Lightmap就存在那里。

感謝...@UWA問答社區(qū)提供了回答,有經(jīng)驗(yàn)的朋友歡迎轉(zhuǎn)至社區(qū)交流:

https://answer.uwa4d.com/question/67d239d73d306f3e9d594e75

封面圖來源于網(wǎng)絡(luò)

今天的分享就到這里。生有涯而知無涯,在漫漫的開發(fā)周期中,我們遇到的問題只是冰山一角,UWA社區(qū)愿伴你同行,一起探索分享。歡迎更多的開發(fā)者加入U(xiǎn)WA社區(qū)。

UWA官網(wǎng):www.uwa4d.com

UWA社區(qū):community.uwa4d.com

UWA學(xué)堂:edu.uwa4d.com

點(diǎn)擊下方名片關(guān)注我們,將我設(shè)為星標(biāo),及時(shí)接收小編每日推送哦,性能優(yōu)化不迷路~

近期精彩回顧