无主之地2配置高吗|看真人裸体BBBBB|秋草莓丝瓜黄瓜榴莲色多多|真人強奷112分钟|精品一卡2卡3卡四卡新区|日本成人深夜苍井空|八十年代动画片

網易首頁 > 網易號 > 正文 申請入駐

團結引擎小游戲平臺 Burst 編譯器支持 —— 提升小游戲運行性能與控制包體大小

0
分享至

在小游戲開發中,CPU 性能瓶頸和包體大小是開發者面臨的兩大核心挑戰。Burst是一個基于 LLVM 的深度優化后端編譯器,能夠將 C# 高性能計算子集(HPC#)編譯為高度優化的機器碼,顯著提升 CPU 密集型計算的運行幀率。同時,針對小游戲的包體敏感性,我們為 Burst 引入了獨有的Managed回退分支裁剪功能,在保證性能的前提下有效控制 wasm 包體大小。

Burst 的 HPC# 代碼不經過 IL2CPP 轉換,而是直接通過 Burst 優化器生成 LLVM IR,經由 LLVM 優化器產出高效的 wasm 代碼,繞過了 IL2CPP 對 .NET垃圾回收機制的模擬,并能夠基于 HPC# 的嚴格假設執行更激進的內聯、循環展開和向量化優化。值得關注的是,Burst 可以獨立于 Job/ECS 使用,開發者不必依賴完整的 DOTS 框架。

Burst 編譯器(com.unity.burst)現已支持團結引擎小游戲平臺。其中,Burst Package 1.8.21 及以上支持小游戲平臺的基本編譯優化功能,Managed 回退分支裁剪功能要求 Burst Package 1.8.27 及以上(引擎版本 Tuanjie 1.9.0 及以上)。

Burst 帶來的收益

性能收益

在小游戲場景中,諸如物理碰撞、大量實體的裁剪計算、避障算法、粒子模擬等 CPU 密集型任務往往是性能瓶頸。Burst 編譯器通過 LLVM 的編譯層級優化,能夠顯著加速這些計算過程,無需修改業務邏輯即可獲得可觀的幀率提升。

以下性能數據基于 oppo A5 測試機、微信小游戲平臺測得,裁剪等級為 Medium。

Infinity 粒子系統場景

Infinity 粒子系統(團結引擎粒子系統)是大規模使用 HPC# 編寫并用 Burst 編譯的典型項目。其核心計算邏輯(粒子模擬、采樣、裁剪等)全部采用 HPC# 實現,充分利用了 Native 容器、Unity.Mathematics 等特性,并通過 SOA 數據組織方式進一步優化計算性能。因此,Infinity 的測試場景(Main、Test200、TestSingle)能夠充分驗證 Burst 編譯優化和包體裁剪的實際效果。該測試場景來自開源項目Infinity Benchmark Suite,開發者可自行下載運行。

Main 場景

指標

Burst+裁剪

不開啟Burst

Burst無裁剪

優化效果

FPS(幀率)

36.1

2.3

34.6

+1469%

wasm包體(KB)

24,223

24,050

25,646

-5.5%

TestSingle 場景

指標

Burst+裁剪

不開啟Burst

Burst無裁剪

優化效果

FPS(幀率)

56.9

1.2

57.7

+4642%

wasm 包體(KB)

23,923

23,783

25,609

-6.6%

注:Infinity 場景中不開啟 Burst 時幀率極低,是因為粒子系統在幀率不足時會觸發多步模擬(Multi-Step)機制——即在一幀內執行多次物理模擬以追趕落后的時間步,進一步加重 CPU 負擔,導致幀率持續惡化。開啟 Burst 后幀率回歸正常水平,多步模擬不再觸發,性能得以充分發揮。因此,Infinity 場景的 FPS 提升幅度包含了多步模擬機制消除后的疊加效果。

第三方插件場景(Asset Store 插件及算法測試)

Congi 場景

指標

Burst+裁剪

不開啟Burst

Burst無裁剪

優化效果

FPS(幀率)

20

8.1

20.2

+147%

wasm 包體(KB)

18,896

18,694

18,972

-0.4%

Duck 場景(軟光柵化)

指標

Burst+裁剪

不開啟Burst

Burst無裁剪

優化效果

FPS(幀率)

34.1

14.6

33.8

+134%

wasm 包體(KB)

18,355

18,301

18,433

-0.4%

Noise 場景(噪聲算法)

指標

Burst+裁剪

不開啟Burst

Burst無裁剪

優化效果

FPS(幀率)

3.9

2.2

3.9

+77%

wasm 包體(KB)

18,154

18,132

18,202

包體收益

Burst 編譯器的激進內聯優化在提升性能的同時,可能會導致 wasm 包體膨脹。為此,團結引擎小游戲平臺針對 Burst 引入了Managed 回退分支裁剪功能。開啟裁剪后,在幀率無明顯降低的前提下,wasm 包體大小得到有效控制:

- 開啟 Burst + 包體裁剪后,包體相比不裁剪可減少 0.3% 至 6.6%,幀率幾乎不變

- 開啟 Burst 后的包體與不開啟 Burst 的包體大小相當,引入 Burst 不會導致包體明顯增大

包體裁剪功能

通過引入 Managed 回退分支裁剪功能,Burst 在小游戲平臺上實現了提升幀率的同時包體不會明顯膨脹。下面介紹其原理和使用方式。

為什么需要裁剪

Burst 編譯器在處理標記了 [BurstCompile] 的 HPC# 函數和 Job 函數時,除了生成經過 Burst 優化器深度優化的 Native Code(最終編譯為 wasm)之外,還會保留一份內容與原函數完全相同的 Managed 回退函數。這份 Managed 回退函數并非由 Burst 編譯,而是會經過 IL2CPP 編譯出現在最終的 wasm 包體中。

Managed 回退分支的設計初衷是:當 Burst 運行時未啟用時,系統可以經由 Managed 回退函數回到 C# 原始實現。但在小游戲平臺上,Burst 始終以 AOT 方式編譯,不存在回退場景,因此經過 IL2CPP 編進包體的 Managed 回退函數成為純粹的冗余代碼,會導致 wasm 包體膨脹。

裁剪實現原理

包體裁剪的核心思路是:在 IL2CPP 編譯鏈路中裁剪掉 Managed 回退函數,這樣 Managed 回退函數就不會出現在最終的 wasm 包體中。

具體實現上,團結引擎在編譯流程中新增了 Managed 回退分支裁剪步驟,檢測到 Managed 回退函數時將其函數體替換為拋異常的代碼。經過這樣處理后的代碼作為 IL2CPP 的輸入,IL2CPP 生成的 wasm 中便不再包含這些冗余的 Managed 回退函數實現,從而有效降低了包體大小。由于小游戲運行時 Burst 始終啟用,優化后的 Native Code 會優先執行,替換后的異常代碼永遠不會被觸發,不影響實際運行。

使用方式

1. 在Player Settings中,將 "Managed Stripping Level" 設為"Medium"或以上


2. 在Burst AOT Settings中,勾選"Enable Burst Compilation"

3. 在Burst AOT Settings中,勾選"Strip Burst Managed Method"(該選項僅在 Enable Burst Compilation 開啟時可見)


注:當 "Managed Stripping Level" 為 "Medium" 及以上,且同時勾選了 "Strip Burst Managed Method" 時,裁剪編譯流程才會生效。

驗證裁剪效果

打包完成后,可在打包輸出目錄下找到 webgl/Build/webgl.wasm 文件,對比開啟和不開啟 "Strip Burst Managed Method" 時該文件的大小差異,即可確認裁剪效果。以含 Infinity 粒子系統的項目為例,開啟裁剪后 wasm 包體可減少約 1,918 KB(約 6%)。裁剪比例與 HPC# 代碼在整個項目代碼中的占比呈正相關——項目中使用 HPC# 編寫的代碼越多,裁剪效果越明顯。

Burst 如何使用

快速使用

開發者可以通過以下方式在項目中使用 Burst。

1. 確認使用方式

Burst 支持兩種使用方式,開發者可根據項目場景選擇:

-Job.Run 方式:適合已有 Job 系統的項目。在小游戲單線程環境下,只需將 Job.Schedule 改為 Job.Run 即可執行

- 靜態函數調用方式:適合將計算邏輯封裝為獨立函數的場景。將計算邏輯封裝在靜態函數中,加上 [BurstCompile] 標簽即可被 Burst 編譯優化

注意:函數外圍的 class/struct 也需要加上 [BurstCompile] 標簽。Burst 會先查找類型上的標簽,再去編譯內部標記的函數。

2. 確認 Build 設置

打包時需確認以下設置:

1.Burst AOT Settings中勾選 "Enable Burst Compilation"

2. 如需包體裁剪,勾選 "Strip Burst Managed Method",并將 "Managed Stripping Level" 設為 "Medium" 或以上

最佳實踐

業務邏輯與算法分離:Burst 更適合計算密集的算法,而非多態/繼承較多的業務邏輯。建議將核心計算邏輯改寫為 HPC# 并用 Burst 編譯,封裝成獨立接口供上層業務邏輯調用。

HPC# 替換步驟:在完成業務邏輯與算法的分離后,將算法部分的 C# 代碼轉換為 HPC# 的通用步驟如下:

1. 替換托管內存為非托管內存:class → struct

2. 替換容器類型:

Array → NativeArray,

List → NativeList,

Dictionary → NativeHashMap

3. 提煉計算過程為 static 方法:在方法和所屬類型上標注 [BurstCompile]

4. 替換數學庫:System.Math → Unity.Mathematics

其他注意事項:

-使用 in/ref 傳遞 struct:HPC# 主要使用 struct,Native 容器中的 struct 元素必須以 in 或 ref 方式傳遞,否則會導致 BC1064 編譯錯誤

-手動內存管理:Native 容器使用完畢后需要顯式調用 Dispose 釋放內存

總結

團結引擎小游戲平臺 Burst 編譯器支持為開發者帶來了兩大核心價值:

1.顯著的性能提升:測試表明,開啟 Burst 后,第三方插件和算法場景的幀率可獲得 77% 至 147% 的提升;Infinity 粒子系統等大規模使用 HPC# 的項目,性能收益更為顯著。效果因代碼中計算密集程度而異,計算越密集提升越明顯

2.可控的包體大?。?/strong>通過獨有的 Managed 回退分支裁剪技術,開啟 Burst + 裁剪后,wasm 包體相比不裁剪可減少 0.3% 至 6.6%,同時幀率幾乎不受影響。裁剪比例與 HPC# 代碼在整個項目代碼中的占比呈正相關——項目中使用 HPC# 編寫的代碼越多,裁剪效果越明顯。且引入 Burst 后的包體與不開啟 Burst 的包體大小相當,不會給小游戲帶來額外的包體壓力

Burst 作為 DOTS 技術棧中獨立的一環,可以脫離 Job/ECS 單獨使用。開發者只需將計算密集的算法邏輯改寫為 HPC#,加上 [BurstCompile] 標簽,即可在小游戲平臺上享受 LLVM 帶來的深度編譯優化。展望未來,隨著 AI 輔助開發逐漸成為趨勢,我們計劃將 HPC# + Burst 的最佳實踐蒸餾為可復用的開發 Skill,幫助開發者更便捷地將業務中的計算密集模塊改寫為 HPC# 并應用 Burst 編譯優化,降低使用門檻,讓更多小游戲項目享受到高性能計算帶來的體驗提升。

掃描海報中二維碼預約直播??和團結引擎一起技術進階!

B站直播間預約二維碼


Unity 官方微信

第一時間了解Unity引擎動向,學習進階開發技能

每一個“點贊”、“在看”,都是我們前進的動力


特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

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.

相關推薦
熱點推薦
拿清華全額獎學金留學,印度女學生回國瘋狂吐槽:中國是封閉社會

拿清華全額獎學金留學,印度女學生回國瘋狂吐槽:中國是封閉社會

小徐講八卦
2026-06-16 14:59:41
41歲夫妻因房事頻繁雙雙住院!中年別硬撐,每周次數有上限

41歲夫妻因房事頻繁雙雙住院!中年別硬撐,每周次數有上限

西樓知趣雜談
2026-06-16 13:57:43
高考剛結束,女生兩天花光母親三個月工資,剩35元反問:我有錯嗎

高考剛結束,女生兩天花光母親三個月工資,剩35元反問:我有錯嗎

搗蛋窩
2026-06-16 04:20:22
有人還記得當年這張家喻戶曉的照片嗎

有人還記得當年這張家喻戶曉的照片嗎

年代回憶
2026-06-12 20:31:53
央視3次痛批電動車解限速!教授:限速25km/h根本不適合騎行需求

央視3次痛批電動車解限速!教授:限速25km/h根本不適合騎行需求

全球電動車
2026-06-13 17:00:07
制裁一出親戚集體劃界!看特奧多羅是怎么把舅舅、表兄全得罪光的

制裁一出親戚集體劃界!看特奧多羅是怎么把舅舅、表兄全得罪光的

小陸搞笑日常
2026-06-16 01:10:00
原特斯拉廠長宋鋼首次開腔:我的新工牌在小米

原特斯拉廠長宋鋼首次開腔:我的新工牌在小米

Ping值焦慮
2026-06-15 02:33:20
一定要多存錢:除了不買衣服,我發現一個很絕的存錢順序能存下錢

一定要多存錢:除了不買衣服,我發現一個很絕的存錢順序能存下錢

雪莉故事匯
2026-06-08 12:41:58
8000多輛軍車成了廢鐵,克里米亞徹底斷供!

8000多輛軍車成了廢鐵,克里米亞徹底斷供!

果媽聊娛樂
2026-06-13 15:24:53
A股:今天沖到4103反復回落,種種跡象表明,A股牛反彈又要結束?

A股:今天沖到4103反復回落,種種跡象表明,A股牛反彈又要結束?

趨勢清風俠
2026-06-16 15:35:44
物業再也不敢橫了!2026物業新規正式實施,4種情況能少交物業費

物業再也不敢橫了!2026物業新規正式實施,4種情況能少交物業費

復轉這些年
2026-06-16 00:30:06
英國官宣:16歲以下全面禁用社交媒體

英國官宣:16歲以下全面禁用社交媒體

新華社
2026-06-15 17:40:29
廁紙扔簍是窮病,得治!

廁紙扔簍是窮病,得治!

霹靂炮
2026-06-10 23:07:06
改版升級!快來查收這份高考志愿填報官方工具

改版升級!快來查收這份高考志愿填報官方工具

微言教育
2026-06-16 09:07:07
阿隆索笑暈!穆里尼奧助攻切爾西!6000 萬接盤送錢挖皇馬天才!

阿隆索笑暈!穆里尼奧助攻切爾西!6000 萬接盤送錢挖皇馬天才!

瀾歸序
2026-06-16 04:07:24
300萬投資養牛變成6萬斤牛肉!鼓吹“互聯網+畜牧”模式實為詐騙,上海5.6億元“云養牛”集資詐騙案宣判:主犯獲刑十年半,并處罰金75萬元

300萬投資養牛變成6萬斤牛肉!鼓吹“互聯網+畜牧”模式實為詐騙,上海5.6億元“云養牛”集資詐騙案宣判:主犯獲刑十年半,并處罰金75萬元

三湘都市報
2026-06-16 10:10:11
中一簽門檻600萬,首日平均暴漲229%!北交所打新能玩嗎?

中一簽門檻600萬,首日平均暴漲229%!北交所打新能玩嗎?

21世紀經濟報道
2026-06-16 13:39:32
輸球又輸人!西班牙王牌賽后怒噴佛得角:他們不會踢球!

輸球又輸人!西班牙王牌賽后怒噴佛得角:他們不會踢球!

瀾歸序
2026-06-16 05:01:23
央視發文,高調官宣鄧亞萍新身份,涉嫌貪腐被帶走傳聞早水落石出

央視發文,高調官宣鄧亞萍新身份,涉嫌貪腐被帶走傳聞早水落石出

夢在深巷aqa
2026-06-16 17:09:46
伊戈達拉:被封蓋后,我女兒被沒教養的小孩欺負...

伊戈達拉:被封蓋后,我女兒被沒教養的小孩欺負...

左右為籃
2026-06-16 17:14:27
2026-06-16 17:52:49
Unity incentive-icons
Unity
Unity中國官方帳戶
2481文章數 6733關注度
往期回顧 全部

科技要聞

DeepSeek融資500億,梁文鋒牢牢握住控制權

頭條要聞

青海發生6.3級地震 多地網友反映有震感

頭條要聞

青海發生6.3級地震 多地網友反映有震感

體育要聞

身價5萬的門將,擋住了12億歐元的狂轟濫炸

娛樂要聞

吳文忻葬禮:2個女兒在靈堂內茫然失措

財經要聞

2萬億存款去哪兒了?

汽車要聞

smart #6上市后 竟然很少被討論參數

態度原創

親子
家居
時尚
本地
軍事航空

親子要聞

女兒求后媽去開家長會,后媽會去嗎

家居要聞

綠意盎然 自然之境

2026最流行的4種色彩,配牛仔藍太好看了!

本地新聞

這屆年輕人為什么都在找心流時刻?

軍事要聞

美伊達成諒解備忘錄 內塔尼亞胡表態

無障礙瀏覽 進入關懷版