Unity包體瘦身實戰(zhàn):從500MB到80MB的紋理、音頻與冗余資源優(yōu)化
1. 項目概述一次從臃腫到精干的包體瘦身實戰(zhàn)最近在優(yōu)化一個Unity項目包體大小從最初的500MB一路降到了80MB這個過程中踩了不少坑也積累了不少行之有效的經(jīng)驗。對于移動端游戲尤其是面向全球發(fā)行的產(chǎn)品包體大小直接關(guān)系到下載轉(zhuǎn)化率、用戶留存和渠道推薦權(quán)重。一個動輒500MB的游戲在流量敏感或存儲空間緊張的市場用戶很可能在下載前就望而卻步。這次優(yōu)化的核心就是圍繞資源這個“大頭”開刀主要從紋理、音頻和冗余資源三個維度進行深度清理和壓縮。這不僅僅是技術(shù)活更是一場對項目資產(chǎn)管理意識和工程規(guī)范的考驗。無論你是獨立開發(fā)者還是團隊中的TA、技術(shù)美術(shù)或客戶端工程師掌握這套方法都能讓你在面對包體膨脹問題時做到心中有數(shù)手中有術(shù)。2. 整體瘦身策略與核心思路拆解面對一個500MB的包體盲目地開始壓縮紋理或裁剪音頻是低效的。首先需要建立一個清晰的認知包體由什么構(gòu)成在Unity構(gòu)建的APK或IPA中主要包含原生庫、腳本代碼、序列化數(shù)據(jù)以及最重要的——資源Assets。對于大多數(shù)3D或2D游戲資源占比往往超過80%而資源中紋理和音頻又是絕對的“體積大戶”。因此我們的瘦身策略遵循“分析-定位-處理-驗證”的閉環(huán)。2.1 第一步知己知彼包體分析在動手之前必須用數(shù)據(jù)說話。Unity提供了強大的分析工具。使用Unity Build Report在構(gòu)建完成后Console窗口會有一個“Build Report”的按鈕。點擊后你可以看到一個按類型和大小排序的資源列表。這是最直觀的入口能快速定位到最大的幾個文件。第三方工具輔助像Asset Hunter 2這類插件能提供更可視化的分析例如按目錄、按標簽統(tǒng)計資源占用并識別出從未被引用即冗余的資源。對于大型項目這類工具能極大提升效率。手動分析關(guān)鍵目錄特別關(guān)注StreamingAssets、Resources文件夾以及Addressables資源組。這些目錄下的內(nèi)容會不經(jīng)壓縮直接打入包體任何不必要的文件在這里都會1:1地增加包體大小。我的經(jīng)驗是先跑一次Development Build雖然會大一些但包含更多信息生成Build Report。通常你會發(fā)現(xiàn)前10名的資源可能就占到了總體積的40%-50%。這些就是你的首要目標。2.2 第二步制定優(yōu)先級與目標根據(jù)分析結(jié)果制定一個清晰的優(yōu)化路線圖低成本高收益項冗余資源清理。刪除永遠用不到的模型、紋理、音頻片段。這幾乎不損失質(zhì)量卻能立即見效。核心攻堅項紋理壓縮。這是視覺資源的大頭優(yōu)化空間巨大但需要平衡質(zhì)量和性能。精細調(diào)整項音頻壓縮與裁剪。語音、音樂文件往往很長通過格式轉(zhuǎn)換和裁剪靜音部分能有效瘦身。工程規(guī)范項檢查構(gòu)建設(shè)置如剝離未使用的引擎代碼Code Stripping、選擇合適的包體壓縮方式LZ4HC vs LZMA。設(shè)定一個階段性目標比如第一期目標是從500MB降到300MB第二期降到150MB最終沖刺80MB。這樣團隊有明確的里程碑也便于評估各項措施的效果。3. 紋理壓縮視覺質(zhì)量與包體大小的博弈紋理是包體膨脹的“罪魁禍首”之一尤其是高清的RGBA 32位紋理。優(yōu)化紋理的核心思想是在可接受的視覺損失范圍內(nèi)使用更高效的壓縮格式和更合理的尺寸。3.1 理解紋理導入設(shè)置的關(guān)鍵參數(shù)在Unity中選中一張紋理其Import Settings里的每一個選項都關(guān)乎大小和質(zhì)量Max Size這是最直接的杠桿。一張2048x2048的紋理降到1024x1024像素數(shù)減少為1/4內(nèi)存和包體占用通常也近似按比例下降。你需要根據(jù)紋理在游戲中的實際顯示大小來設(shè)定。UI圖集、遠處背景貼圖、小型道具的紋理往往不需要2048的大小。Format這是壓縮算法的選擇影響巨大。ASTC移動平臺iOS/Android的當前首選。它提供了從ASTC 4x4高壓縮到ASTC 12x12高質(zhì)量等多種塊尺寸。通常UI和重要角色用ASTC 5x5或6x6場景貼圖用8x8法線貼圖用8x8或5x5具體看質(zhì)量要求。注意ASTC格式在Unity中需要根據(jù)Texture Type如Normal map, Sprite正確設(shè)置否則壓縮效果可能不佳。ETC2支持Alpha通道的ETC是OpenGL ES 3.0的標準。如果目標設(shè)備不支持ASTC較老設(shè)備ETC2是備選。ETC2的4bits ETC2_RGBA8質(zhì)量尚可但通常不如ASTC靈活高效。PVRTC主要用于iOS設(shè)備PowerVR GPU在支持的設(shè)備上效率不錯但通用性不如ASTC。Crunch Compression這是一種基于DXT或ETC的有損壓縮在紋理數(shù)據(jù)被GPU解碼前在包體內(nèi)進行二次壓縮。它能顯著減小包體.apk/.ipa文件但會增加運行時內(nèi)存占用和加載時的CPU解壓開銷。適用于對包體大小極度敏感且能接受一定加載延遲的場景。實操心得不要全局應(yīng)用一種壓縮格式。我通常會建立不同的紋理預設(shè)Preset。例如“UI_HighQuality”預設(shè)用ASTC 5x5“Environment_Diffuse”用ASTC 8x8“NormalMap”用ASTC 5x5或8x8然后通過腳本或手動批量應(yīng)用。對于支持ASTC的設(shè)備可以完全放棄ETC2以簡化配置。3.2 實施紋理優(yōu)化的工作流審計與分類使用篩選器找出所有尺寸過大如超過1024或格式不理想如大量Truecolor的紋理。創(chuàng)建壓縮預設(shè)在Project Settings - Editor - Asset Pipeline下創(chuàng)建針對不同用途的紋理導入預設(shè)。批量處理可以編寫編輯器腳本遍歷紋理資源根據(jù)路徑、名稱關(guān)鍵詞自動應(yīng)用對應(yīng)的預設(shè)。例如所有“UI/”下的Sprite自動應(yīng)用“UI_HighQuality”預設(shè)。質(zhì)量對比Unity的紋理導入窗口有預覽功能可以對比不同壓縮格式和尺寸下的視覺效果。對于關(guān)鍵紋理如主角皮膚、主要UI務(wù)必進行實機對比確保質(zhì)量損失在可接受范圍內(nèi)。利用Sprite Atlas對于UI精靈務(wù)必使用Sprite Atlas進行打包。這不僅能減少Draw CallAtlas本身也可以統(tǒng)一壓縮格式和尺寸便于管理。確保Atlas的尺寸是2的冪次方并且沒有過多空白區(qū)域通過Padding設(shè)置調(diào)整。3.3 一個常見的“坑”法線貼圖和線性紋理法線貼圖務(wù)必在紋理的Import Settings中將“Texture Type”設(shè)置為“Normal map”。這樣Unity會使用更適合法線向量的壓縮方式如使用兩個通道存儲并啟用BC5/DXT5nm或?qū)?yīng)的移動端格式并且sRGB選項會自動關(guān)閉。如果錯誤地以普通RGB紋理壓縮法線貼圖會導致嚴重的視覺錯誤和性能浪費。sRGB vs Linear對于顏色紋理Albedo/Diffuse通常需要勾選sRGB顏色空間。對于非顏色數(shù)據(jù)如金屬度、光滑度、法線、高度圖必須取消勾選sRGB將其視為線性數(shù)據(jù)。錯誤的設(shè)置會影響光照計算和最終視覺效果。通過上述組合拳我們項目中的紋理資源總體積減少了約65%這是包體瘦身中貢獻最大的一部分。4. 音頻裁剪與優(yōu)化聽不見的靜音都是負擔音頻文件特別是背景音樂BGM和人物語音VO長度動輒幾分鐘但其中可能包含大量的首尾靜音或低音量段落。直接導入.wav或.mp3文件即使壓縮體積也相當可觀。4.1 音頻導入格式選擇Unity中音頻的導入格式至關(guān)重要Vorbis (.ogg)Unity默認的壓縮格式在質(zhì)量和大小間取得較好平衡。通過“Quality”滑塊調(diào)整數(shù)值越低壓縮越狠體積越小但音質(zhì)損失越大。對話音通常70-80即可BGM可能需要85-90。ADPCM適用于大量短促音效如腳步聲、武器聲解碼速度快CPU占用低但壓縮率不如Vorbis。對于需要極低延遲、頻繁播放的音效是好的選擇。MP3兼容性好但Unity內(nèi)部仍需轉(zhuǎn)換一般不推薦作為主要導入格式。未壓縮PCM保真度最高但體積巨大僅用于對音質(zhì)有極端要求且非常簡短的音效。4.2 強制單聲道與采樣率Force To Mono對于絕大多數(shù)音效如UI點擊、環(huán)境聲、技能音效立體聲是沒有必要的。勾選“Force To Mono”可以將文件體積直接減半而玩家?guī)缀醺兄坏絽^(qū)別。只有需要營造強烈空間感的BGM或環(huán)境音才需要保留立體聲。采樣率Sample Rate默認的44100 Hz對于游戲音頻通常綽綽有余。對于音效可以嘗試降低到22050 Hz體積再減半人耳對短促音效的采樣率變化不敏感??梢栽谝纛l導入設(shè)置中手動覆蓋。4.3 音頻裁剪去除靜音—— 關(guān)鍵步驟這是音頻優(yōu)化中最具“性價比”的一步。以語音文件為例錄音前后通常有幾百毫秒的靜音每句之間也有停頓。這些靜音在包體和內(nèi)存中都是實實在在的數(shù)據(jù)。手動裁剪使用Audacity、Adobe Audition等專業(yè)音頻軟件批量打開語音文件裁剪掉首尾靜音??梢栽O(shè)置一個噪音閾值如-50dB軟件能自動檢測并裁剪。自動化流程對于大型項目手動處理不現(xiàn)實??梢跃帉懸粋€編輯器腳本調(diào)用如FFmpeg的命令行工具進行批量靜音檢測和裁剪?;舅悸肥鞘褂胹ilencedetect濾鏡找出靜音段落然后用silenceremove濾鏡將其去掉。這需要一些腳本編寫和調(diào)試工作但一勞永逸。# 一個簡化的FFmpeg靜音移除示例需根據(jù)實際情況調(diào)整參數(shù) ffmpeg -i input.wav -af silenceremovestart_periods1:start_threshold-50dB:start_duration0.1, areverse, silenceremovestart_periods1:start_threshold-50dB:start_duration0.1, areverse output.wavUnity內(nèi)的微調(diào)裁剪后在Unity的音頻導入面板中還可以微調(diào)“Load Type”。對于較長的BGM使用“Streaming”可以從存儲直接流式讀取不占用大量內(nèi)存但會有極小的加載延遲。對于短音效使用“Decompress On Load”或“Compressed In Memory”來平衡內(nèi)存和CPU。通過將音頻格式統(tǒng)一為Vorbis、強制單聲道、合理降低采樣率并結(jié)合靜音裁剪我們項目的音頻文件夾體積減少了近70%。特別是語音包從上百MB降到了不到30MB。5. 冗余資源清理給項目來一次大掃除冗余資源是指那些存在于項目文件夾中但沒有任何場景、預制體、資源引用或代碼動態(tài)加載的資源。它們靜靜地躺在硬盤上并在構(gòu)建時被無情地或者更糟被錯誤地打入包中。5.1 如何識別冗余資源使用AssetDatabase API編寫查找腳本這是最根本的方法。原理是獲取所有Asset的GUID然后通過AssetDatabase.GetDependencies查找所有被引用的資源最后找出那些不在被引用列表中的資源。網(wǎng)上有很多開源示例腳本核心邏輯是遍歷Assets/目錄對比“所有資源”和“被引用資源”兩個集合的差集。使用第三方插件如前面提到的Asset Hunter 2或Odin Inspector的Validator功能它們提供了更友好、更安全的界面來標記和刪除未引用資源。檢查特殊文件夾Resources文件夾Unity會無條件打包該文件夾下所有資源。務(wù)必確保里面沒有過時或測試用的文件。StreamingAssets同樣會完整復制到包體內(nèi)。定期清理其中的臨時文件、舊配置表等。Addressables這是最容易積累冗余的地方。你需要檢查每個Addressables Group的構(gòu)建報告確保沒有“孤立的”資源即被打包但未被任何Group顯式引用的資源。Addressables系統(tǒng)提供了構(gòu)建日志來分析。5.2 安全清理流程清理資源是高風險操作務(wù)必謹慎備份備份備份在操作前確保項目已提交版本控制系統(tǒng)如Git或者有完整的備份。先移動后刪除編寫腳本或使用工具先將識別出的未引用資源移動到一個臨時文件夾如_ToDelete而不是直接刪除。構(gòu)建測試將資源移動到臨時文件夾后進行一次完整的構(gòu)建和試玩。運行所有核心功能確保沒有出現(xiàn)“粉色丟失材質(zhì)”或資源加載錯誤。確認無誤后再刪除如果測試通過再清空臨時文件夾。如果測試失敗說明你的引用檢測有遺漏比如通過字符串路徑動態(tài)加載的資源需要將誤移的資源拖回原處并修正檢測邏輯。注意隱式依賴有些資源不會被直接引用但可能是Shader變體、Animation Clip所需的動畫曲線數(shù)據(jù)等。過于激進的清理可能會破壞這些隱式關(guān)系。因此全面的測試至關(guān)重要。在我們的項目中通過一次徹底的冗余資源清理移除了超過2GB的未引用資產(chǎn)包括大量高精度原始模型、中間文件、舊版本美術(shù)資源這些資源雖然不在版本控制的構(gòu)建列表里但如果不清理很容易被誤操作打入包中或者單純浪費團隊磁盤空間。6. 構(gòu)建配置與其他優(yōu)化技巧在處理好紋理、音頻、冗余這“三座大山”后還有一些構(gòu)建配置的細節(jié)可以進一步擠壓包體空間。6.1 代碼剝離Code Stripping在Player Settings - Other Settings中找到“Code Stripping”選項對于Mono后端或“Managed Stripping Level”對于IL2CPP后端。Mono通常設(shè)置為“Strip ByteCode”或更高。IL2CPP將“Managed Stripping Level”設(shè)置為“High”。這會激進地移除引擎和項目中未使用的代碼。但要注意如果項目中使用反射Reflection或動態(tài)創(chuàng)建類型高等級的代碼剝離可能導致運行時錯誤。需要進行充分測試。一個常見的問題是通過字符串名稱查找組件或調(diào)用方法如果相關(guān)類被剝離功能就會失效。此時可能需要使用[Preserve]屬性或在link.xml文件中配置需要保留的類型。6.2 包體壓縮方式在構(gòu)建時可以選擇壓縮方式。LZ4HC這是默認推薦選項。它提供較快的加載速度因為可以隨機讀取同時也有不錯的壓縮率。包體比不壓縮小但比LZMA大。LZMA壓縮率最高能生成最小的包體文件。但缺點是整個包體是一個壓縮塊啟動時需要先解壓一部分數(shù)據(jù)導致首次啟動時間變長。對于內(nèi)容更新頻繁或非常在意首次啟動速度的游戲需要謹慎選擇。不壓縮包體最大但安裝后占用空間最小因為無需解壓。適用于極小包體或特殊場景。我們通常選擇LZ4HC在包體大小和加載速度間取得平衡。6.3 分包與AssetBundle/Addressables進階策略對于超大型游戲80MB可能只是一個基礎(chǔ)包。更高級的策略是使用AssetBundle或Addressables進行資源分包和動態(tài)下載?;A(chǔ)包80MB包含游戲啟動必需的核心代碼、初始場景資源和UI。首日補丁包在玩家啟動游戲后通過熱更新下載第一個可玩關(guān)卡所需的資源。按需下載將非關(guān)鍵資源如后期關(guān)卡、特定角色皮膚、多語言語音包放在服務(wù)器上玩家需要時才下載。 Addressables系統(tǒng)極大地簡化了這個流程的管理它能夠自動處理依賴、版本控制和本地/遠程加載。將包體從500MB降到80MB可能意味著將另外400MB的資源放到了云端通過流式加載的方式呈現(xiàn)給玩家。7. 常見問題與排查技巧實錄在瘦身過程中你肯定會遇到各種奇怪的問題。這里記錄幾個典型場景和解決方法。7.1 問題構(gòu)建后包體大小與編輯器分析結(jié)果不符依然很大。排查思路檢查構(gòu)建日志構(gòu)建完成后仔細閱讀Console中的日志。Unity會列出打包的資源和大小。查找是否有意料之外的大文件被打入。檢查StreamingAssets和Resources再次確認這兩個文件夾它們的內(nèi)容是“直通”的不受常規(guī)壓縮設(shè)置影響。一個忘記刪除的測試用高清視頻放在這里就能讓包體暴漲。檢查插件Plugins目錄第三方SDK如廣告、分析、支付往往會帶入自己的原生庫.so或.a文件。不同平臺的庫可能很大。檢查是否有為不支持的架構(gòu)如x86打包了庫文件。在Player Settings中可以取消勾選不需要的CPU架構(gòu)如Android的x86。使用分析工具解構(gòu)APK/IPA對于Android可以用apkanalyzerAndroid SDK自帶或直接解壓APK文件查看內(nèi)部什么文件最大。對于iOS構(gòu)建出的Xcode工程中資源包的內(nèi)容也是可見的。7.2 問題應(yīng)用了紋理壓縮預設(shè)但構(gòu)建后紋理大小沒變。排查思路確認紋理類型Texture Type一張設(shè)置為“Default”的紋理其壓縮格式選項可能和設(shè)置為“Sprite (2D and UI)”或“Normal map”的完全不同。確保紋理類型符合其用途。檢查Override for Platform在紋理導入設(shè)置底部確保針對目標平臺如Android, iOS的覆蓋設(shè)置是正確的并且沒有不小心取消勾選“Override for XXX”導致使用了桌面平臺的設(shè)置。檢查是否被Sprite Atlas包含如果紋理被打包進了Sprite Atlas那么單個紋理的導入設(shè)置可能會被Atlas的全局設(shè)置覆蓋。需要檢查Sprite Atlas的打包設(shè)置Pack Settings中的壓縮格式。重新導入Reimport有時候更改設(shè)置后需要手動右鍵點擊紋理或所在文件夾選擇“Reimport”才能生效。7.3 問題開啟了高等級代碼剝離Stripping Level High后游戲運行時崩潰或功能缺失。排查思路定位崩潰堆棧查看崩潰日志找到缺失的類或方法名。使用link.xml在Assets目錄下創(chuàng)建或修改一個名為link.xml的文件。在這個文件中你可以指定哪些程序集、命名空間或具體的類型必須被保留不被剝離。例如linker assembly fullnameMyGame.AssemblyName preserveall/ !-- 或者保留特定類型 -- assembly fullnameUnityEngine type fullnameUnityEngine.SomeClass preserveall/ /assembly /linker使用[Preserve]屬性在可能被動態(tài)調(diào)用的自定義類上添加[Preserve]屬性。逐步降低剝離等級測試如果問題復雜可以先降到“Low”或“Medium”確認是否是剝離引起的問題然后再逐步調(diào)高并配合link.xml進行精細控制。7.4 問題音頻裁剪后播放時出現(xiàn)“咔噠”聲或開頭/結(jié)尾不自然。排查思路靜音檢測閾值過低裁剪腳本或工具的靜音檢測閾值如-50dB可能設(shè)得太低把一些非常微弱的有效聲音也當成了靜音剪掉導致音頻波形在剪裁處不連續(xù)產(chǎn)生爆音。嘗試將閾值提高到-40dB或-35dB。淡入淡出Fade在裁剪后對音頻的首尾應(yīng)用一個非常短暫的淡入淡出效果如5-10毫秒可以平滑過渡消除咔噠聲。這可以在音頻編輯軟件中批量處理也可以通過Unity的Audio Mixer或腳本在運行時實現(xiàn)。手動復查對于非常重要的音頻如主角關(guān)鍵臺詞自動化裁剪后最好能抽樣進行人工試聽確保沒有損傷音質(zhì)。包體瘦身是一個持續(xù)的過程而不是一次性的任務(wù)。它應(yīng)該融入到項目的日常開發(fā)規(guī)范中。例如美術(shù)資源導入規(guī)范應(yīng)明確紋理尺寸上限和壓縮格式音頻資源提交前要求先裁剪靜音定期運行冗余資源掃描腳本。當團隊每個人都建立起包體大小的意識時維護一個精干的安裝包就不再是難題。從500MB到80MB減掉的不僅是數(shù)字更是用戶下載的猶豫和等待的焦慮換來的是更順暢的發(fā)行和更好的用戶體驗。

相關(guān)新聞

SpringBoot+Vue醫(yī)院掛號系統(tǒng)設(shè)計與高并發(fā)優(yōu)化

SpringBoot+Vue醫(yī)院掛號系統(tǒng)設(shè)計與高并發(fā)優(yōu)化

1. 項目概述醫(yī)院掛號管理系統(tǒng)是醫(yī)療信息化建設(shè)中的核心應(yīng)用之一。這個基于SpringBootVue技術(shù)棧實現(xiàn)的系統(tǒng),旨在解決傳統(tǒng)醫(yī)院掛號流程中的三大痛點:窗口排隊時間長、號源分配不透明、就診信息不互通。我在實際開發(fā)中發(fā)現(xiàn),一個設(shè)計良好的掛號系…

2026/7/28 20:54:44 閱讀更多
五大神經(jīng)網(wǎng)絡(luò)原理與實戰(zhàn)速成:從CNN到Transformer的本地運行指南

五大神經(jīng)網(wǎng)絡(luò)原理與實戰(zhàn)速成:從CNN到Transformer的本地運行指南

這次我們來看一個面向初學者的神經(jīng)網(wǎng)絡(luò)原理與實戰(zhàn)速成內(nèi)容。標題雖然帶有“10分鐘動畫講解”的營銷感,但其核心價值在于將GNN、RNN、GAN、CNN、Transformer這五大主流神經(jīng)網(wǎng)絡(luò)架構(gòu)的原理與實戰(zhàn)進行系統(tǒng)性串聯(lián)。對于剛?cè)腴TAI、被各種縮寫搞暈的開發(fā)者來說,這種對比學習能快速建…

2026/7/28 20:54:44 閱讀更多
Linux tar命令深度解析:從打包壓縮到增量備份實戰(zhàn)

Linux tar命令深度解析:從打包壓縮到增量備份實戰(zhàn)

這次我們來看一個 Linux 系統(tǒng)管理員和開發(fā)者必須掌握的核心工具:tar命令。它遠不止是“打包壓縮”那么簡單,而是文件歸檔、備份、遷移和分發(fā)的基石。無論你是要備份網(wǎng)站目錄、分發(fā)軟件源碼,還是將日志文件歸檔到遠程服務(wù)器,tar都是…

2026/7/28 20:54:44 閱讀更多
SEATA AT模式:低侵入分布式事務(wù)解決方案的原理與實踐

SEATA AT模式:低侵入分布式事務(wù)解決方案的原理與實踐

1. 項目概述:為什么我們需要SEATA的AT模式? 在微服務(wù)架構(gòu)里,一個業(yè)務(wù)操作經(jīng)常需要跨多個服務(wù)、多個數(shù)據(jù)庫來完成。比如一個電商下單流程,你可能需要調(diào)用訂單服務(wù)創(chuàng)建訂單,調(diào)用庫存服務(wù)扣減庫存,再調(diào)用賬戶服…

2026/7/29 4:36:03 閱讀更多
密碼安全進階:鹽與胡椒在加密存儲中的關(guān)鍵作用

密碼安全進階:鹽與胡椒在加密存儲中的關(guān)鍵作用

1. 密碼安全的核心要素解析當我們在討論密碼安全時,大多數(shù)人第一反應(yīng)就是"加密"——這確實沒錯,但遠遠不夠。就像做一道好菜,光有主料不行,還需要調(diào)味料來提升風味。在密碼學領(lǐng)域,"鹽"(Salt)和&qu…

2026/7/29 4:36:03 閱讀更多
python爬取貝殼中二手房的數(shù)據(jù)

python爬取貝殼中二手房的數(shù)據(jù)

前言:通過代碼爬取貝殼中二手房的數(shù)據(jù),以此給更多需要了解爬蟲或者二手房信息的人提供便利。 第一部分:爬取地址 1.1貝殼首頁地址 jiujiang.ke.com 第二部分:爬取數(shù)據(jù) 2.1輸入要爬多少頁 int(input(輸入一共要多少頁&#xf…

2026/7/29 4:26:03 閱讀更多
面試官大笑:“一個任務(wù)拆給 5 個 Subagent 并行跑,不比 1 個快 5 倍?“我搖頭:“快不了,還可能更慢“

面試官大笑:“一個任務(wù)拆給 5 個 Subagent 并行跑,不比 1 個快 5 倍?“我搖頭:“快不了,還可能更慢“

前兩個月,我在重構(gòu) AlgoMooc 網(wǎng)站過程中,發(fā)現(xiàn)一個問題:在 Claude Code 里把一個任務(wù)拆給 5 個 Subagent 并行跑,結(jié)果可能比 1 個 agent 從頭干到尾還慢? 大多數(shù)人的第一反應(yīng)是反過來的:活是并行干的&#…

2026/7/29 0:15:24 閱讀更多
# 鴻蒙 HarmonyOS 應(yīng)用開發(fā)實戰(zhàn)(第25期)|骰子(Dice Roller)— Unicode 符號與動畫渲染精講

# 鴻蒙 HarmonyOS 應(yīng)用開發(fā)實戰(zhàn)(第25期)|骰子(Dice Roller)— Unicode 符號與動畫渲染精講

一、應(yīng)用概述 骰子(Dice Roller) 是一款經(jīng)典的休閑娛樂應(yīng)用,模擬了真實擲骰子的過程。應(yīng)用投擲兩個骰子(六面標準骰),使用 Unicode 骰面符號直觀展示每個骰子的點數(shù),并伴有快速滾動的動畫效果?!?/p>

2026/7/29 0:15:24 閱讀更多