Infinity Particle System Package在 1.3.0 版本(要求引擎版本:Tuanjie 1.8.0 及以上)中引入了InfinityAsset文件,這一創(chuàng)新設(shè)計(jì)允許多個(gè)粒子系統(tǒng)最大限度地共享配置參數(shù)。開(kāi)發(fā)者能夠運(yùn)用 InfinityAsset,在保證粒子效果的情況下,有效降低 Infinity 粒子系統(tǒng)在實(shí)例化階段的開(kāi)銷(xiāo)。該能力支持全平臺(tái),在移動(dòng)設(shè)備上也有不錯(cuò)的收益。
InfinityAsset 帶來(lái)的收益
性能收益
粒子系統(tǒng)通過(guò) InfinityAsset 共享的參數(shù),能夠減少大量重復(fù)性的實(shí)例化開(kāi)銷(xiāo)。如下圖所示,在 PoolInstantiate 場(chǎng)景支持 InfinityAsset 后,粒子池中粒子系統(tǒng)的 awake 時(shí)間從 137ms 降低到了54ms,整個(gè)粒子池的初始化開(kāi)銷(xiāo)也從 900ms 以上降低到了約110ms,提升非常明顯。
![]()
Android 平臺(tái) PoolInstantiate 場(chǎng)景第二幀 Infinity 不使用 InfinityAsset
![]()
Android 平臺(tái) PoolInstantiate 場(chǎng)景第二幀 Infinity 使用 InfinityAsset
![]()
開(kāi)發(fā)者觀察到的性能提升,取決于場(chǎng)景中能夠共享參數(shù)的粒子系統(tǒng)數(shù)量,可共享的數(shù)量越多,獲得的收益就越大。但值得說(shuō)明的是,即便沒(méi)有可共享參數(shù)的粒子系統(tǒng),InfinityAsset 針對(duì)序列化/反序列化流程做出了優(yōu)化,也能獲得較之前版本更好的性能。
內(nèi)存收益
InfinityAsset 能夠同時(shí)降低粒子系統(tǒng)的內(nèi)存開(kāi)銷(xiāo)。通過(guò) Memory Profiler 分析,不難發(fā)現(xiàn),新增 InfinityAsset 后,粒子系統(tǒng)中用于存儲(chǔ)參數(shù)的內(nèi)存明顯降低。
![]()
改用 InfinityAsset 后,Test200 場(chǎng)景,參數(shù)存儲(chǔ)開(kāi)銷(xiāo)約為 250K
![]()
舊版 Infinity 粒子系統(tǒng),Test200 場(chǎng)景,參數(shù)存儲(chǔ)開(kāi)銷(xiāo)約 1.5M
![]()
Built-In 粒子系統(tǒng),Test200 場(chǎng)景內(nèi),粒子系統(tǒng)共有 3M 開(kāi)銷(xiāo)
同樣的,這部分內(nèi)存收益,也取決于場(chǎng)景中能夠共享參數(shù)的粒子系統(tǒng)數(shù)量,可共享的數(shù)量越多,獲得的內(nèi)存收益也就越大。
InfinityAsset 如何使用
快速使用
1.您可以通過(guò)以下方式為 Infinity 粒子系統(tǒng)設(shè)置合適的 InfinityAsset
![]()
step 1. 創(chuàng)建粒子系統(tǒng)
![]()
step 2. 選擇/創(chuàng)建 Infinity Asset
![]()
step 3. 調(diào)整粒子特效
改用 InfinityAsset 后,開(kāi)發(fā)者使用粒子系統(tǒng)的流程基本不變,僅在創(chuàng)建粒子系統(tǒng)時(shí)新增“選擇 InfinityAsset ”步驟,用于輔助用戶使用合適的 InfinityAsset。
2.備注說(shuō)明:
InfinityParticleSystem 依賴于 InfinityAsset ,且一開(kāi)始必須選擇一個(gè) InfinityAsset,如未選擇合適的 InfinityAsset,會(huì)引起報(bào)錯(cuò)。
開(kāi)發(fā)者修改 InfinityParticleSystem,會(huì)同步修改到 InfinityAsset,并影響到所有引用了這個(gè) InfinityAsset 的 InfinityParticleSystem。
InfinityParticleSystem 中有部分場(chǎng)景相關(guān)參數(shù)未被包含在 InfinityAsset 中,具體為:
MainModule 下的 CustomSimulationSpace
ShapeModule 下的 ShapeMeshRenderer、
ShapeSkinnedMeshRenderer、ShapeSpriteRenderer
ExternalForceModule 下的
InfinityForceField
CollisionModule 下的 CollisionPlanes
TriggerModule 下的 TriggerPrimitives
SubEmitterModule 下的 SubEmitter 及對(duì)應(yīng)的 emitterMode、inherit、emit probability 等
LightModule 下的 Light
RendererModule 下的 RendererAnchor
這些參數(shù)都能接收/只接收?qǐng)鼍皟?nèi)的 GameObject 而非 Asset 對(duì)象,因此無(wú)法被 InfinityAsset 序列化,因此需要為每個(gè)粒子系統(tǒng)單獨(dú)存儲(chǔ)。
請(qǐng)注意:開(kāi)發(fā)者在修改這些參數(shù)時(shí),僅修改了當(dāng)前粒子系統(tǒng),并無(wú)法同步到所有引用該 InfinityAsset 的粒子系統(tǒng)。
如何轉(zhuǎn)化為 InfinityAsset
從 Built-In 粒子系統(tǒng)轉(zhuǎn)化為 InfinityAsset
如之前版本,開(kāi)發(fā)者仍能通過(guò) Convert 腳本將 Built-In 粒子系統(tǒng)轉(zhuǎn)換為新版的 Infinity 粒子系統(tǒng)。
InfinityAsset 會(huì)默認(rèn)保存于 Assets/InfinityAsset/ 路徑下,如有需求,可自行調(diào)整存儲(chǔ)位置。
![]()
![]()
從舊版本的 Infinity 粒子系統(tǒng)轉(zhuǎn)化為 InfinityAsset
1.為了輔助開(kāi)發(fā)者將舊版的 Infinity 粒子系統(tǒng)切換成支持 InfinityAsset 的粒子系統(tǒng),新增了一個(gè) Convert 工具。
![]()
![]()
2.如果是從舊版本的 InfinityAsset 轉(zhuǎn)換到 InfinityAsset,一個(gè) GameObject 下會(huì)存在兩個(gè) Infinity 粒子系統(tǒng)相關(guān)的 component,一個(gè)舊版本的 ParticleSystemSharp,一個(gè)新版本的 InfinityParticleSystem,在轉(zhuǎn)移完成后,可以刪除舊版本的 ParticleSystemSharp。
我們?cè)谶@個(gè)版本仍然保留舊版本的 component,是為了保留舊版本下的序列化信息,方便做 converter。待完成了 converter 后,舊版本就不再有意義。
后續(xù)更新中,我們會(huì)刪除 ParticleSystemSharp 這個(gè) component。
Known issues
1.Converter 腳本使用時(shí),如 game object 的名字中帶有如"/"、"\\"等符號(hào),會(huì)導(dǎo)致文件路徑識(shí)別錯(cuò)誤,請(qǐng)開(kāi)發(fā)者在使用時(shí)注意。
2.Shader 的轉(zhuǎn)化問(wèn)題仍然存在,部分 Shader 需要用戶手動(dòng)轉(zhuǎn)化
這部分可以參考之前 Infinity 發(fā)布時(shí)對(duì) Shader 的說(shuō)明:遷移粒子系統(tǒng)shader | Infinity Particle System | 1.1.0-pre.1
https://docs.unity.cn/cn/Packages-cn/cn.tuanjie.infinity@1.1/manual/InfinityTransferShader.html
Unity 官方微信
第一時(shí)間了解Unity引擎動(dòng)向,學(xué)習(xí)進(jìn)階開(kāi)發(fā)技能
每一個(gè)“點(diǎn)贊”、“在看”,都是我們前進(jìn)的動(dòng)力
![]()
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.