国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Unity3D熱更新】Unity3D 零成本、高性能的C#的熱更新框架:HybridCLR

這篇具有很好參考價值的文章主要介紹了【Unity3D熱更新】Unity3D 零成本、高性能的C#的熱更新框架:HybridCLR。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

推薦閱讀

  • CSDN主頁
  • GitHub開源地址
  • Unity3D插件分享
  • 簡書地址
  • 我的個人博客
  • QQ群:1040082875

大家好,我是佛系工程師☆恬靜的小魔龍☆,不定時更新Unity開發(fā)技巧,覺得有用記得一鍵三連哦。

一、前言

相信只要做過熱更新的小伙伴,都被熱更新搞過心態(tài)吧。

我有一個小伙伴,本來是面向Unity做可視化開發(fā),結(jié)果去做熱更新,直接面對代碼開發(fā),非常難受。

首先,來介紹一下什么是熱更新、熱更新的優(yōu)點(diǎn)、熱更新的解決方案,最后再引出這篇文章的主角HybridCLR C#熱更新方案。

想要省流的小伙伴可以直接跳到第三節(jié):C#熱更新方案HybridCLR的使用。

1-1、什么是熱更新

熱更新就是游戲或軟件更新的時候,不用再重新下載安裝包進(jìn)行安裝。

而是在啟動應(yīng)用程序的時候,在內(nèi)部進(jìn)行資源或代碼的更新。

1-2、熱更新的優(yōu)點(diǎn)

1、可以迅速修復(fù)Bug,避免用戶再去重新下載安裝包,在游戲或軟件內(nèi)部就更新BUG
2、減少安裝包的體積,將資源上傳到服務(wù)器,在運(yùn)行時動態(tài)下載剩余資源
3、迅速進(jìn)行游戲更新,可以不用再上架應(yīng)用商店,直接對游戲或軟件進(jìn)行更新

1-3、熱更新的基本流程

開發(fā)端:

1、開發(fā)端更新了游戲或軟件內(nèi)容,比如更新了腳本、替換了資源
2、將需要更新的代碼或資源,打包成AssetBundle放到服務(wù)器
3、在服務(wù)器上,修改記錄版本號的文件
4、修改服務(wù)器上的對比文件

客戶端:

1、運(yùn)行程序,進(jìn)行版本號的比較,版本號不同則進(jìn)行下面操作
2、下載服務(wù)器上的對比文件,類似于目錄,確定下載列表
3、根據(jù)下載列表,下載所需的資源
4、解壓資源,用最新的對比文件覆蓋本地的對比文件

1-4、熱更新的解決方案

1-4-1、基于Lua的熱更新解決方案

簡介:

基于Lua的熱更新解決方案主要有xLua、toLua、sLua、uLua

這些熱更新方案都是基于Lua語言的。

也可以叫做Lua插件,運(yùn)行Lua,并實現(xiàn)了Lua和C#交互的插件。

為什么用Lua語言做熱更新

至于為什么用Lua語言做熱更新,主要是因為Lua語言是解釋性語言,并不需要事先編譯,而是運(yùn)行動態(tài)解釋執(zhí)行的。

在解釋Lua語言的時候不是翻譯成機(jī)器碼,而是使用C代碼記性解釋,不用開辟可執(zhí)行權(quán)限的內(nèi)存空間,也不會有新代碼執(zhí)行,執(zhí)行解釋的是C語言寫出來的虛擬機(jī)。

為什么不用C#做熱更新

至于為什么不用C#語言做熱更新,因為C#的定位是一個追求效率且功能強(qiáng)大的編譯型語言,在運(yùn)行時需要代碼,就將C#的中間語言MSIL轉(zhuǎn)換成機(jī)器碼的編譯 JIT 。

在Android環(huán)境中支持 JIT ,但是IOS不允許獲取具有可執(zhí)行權(quán)限的內(nèi)存空間,不能通過DLL文件直接更新代碼。

uLua

Lua插件的原生版本,不會產(chǎn)生靜態(tài)代碼,反射機(jī)制,效率低下,速度慢,GC頻繁,已停止更新。

xLua

XLua是騰訊開發(fā)的開源Lua插件,為Unity、.Net、Mono等環(huán)境增加Lua腳本編程的能力,借助xLua可以使Lua代碼與C#代碼相互調(diào)用。

所以xLua可以很方便地實現(xiàn)Lua在Unity3D中的使用。

本質(zhì)是實現(xiàn)了運(yùn)行在C#環(huán)境上的Lua虛擬機(jī)使得Lua可以和C#相互調(diào)用和訪問,利用 IL 注入,實現(xiàn)用Lua函數(shù)替換C#原函數(shù)。

toLua

toLua基于LuaInterface。

LuaInterface是一個實現(xiàn)lua和微軟.Net平臺的 CLR 混合編程的開源庫,使得lua腳本可以實例化 CLR 對象,訪問屬性,調(diào)用方法甚至使用lua函數(shù)來處理事件。

本質(zhì)就是提供一個Lua的運(yùn)行環(huán)境(虛擬機(jī)),為Unity提供編程的能力,讓C#和Lua可以相互調(diào)用合訪問。

sLua

sLua代碼執(zhí)行好,性能比toLua低。

1-4-2、使用Lua熱更新方案的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

  • Lua語言由C語言編寫,通用性強(qiáng),可以運(yùn)行在各類操作系統(tǒng)
  • Lua語言是解釋性語言,由虛擬器解釋執(zhí)行,無需進(jìn)行編譯
  • 有很多成熟的項目在使用Lua,有較多的使用文檔

缺點(diǎn):

  • 學(xué)使用一門Lua語言,增加學(xué)習(xí)和開發(fā)成本(心酸淚)
  • Lua是弱類型的非面向?qū)ο蟮恼Z言,在大型項目中容易造成結(jié)構(gòu)混亂和維護(hù)困難的問題
  • Lua需要在C#環(huán)境中提供運(yùn)行環(huán)境,對Lua和C#進(jìn)行相互轉(zhuǎn)換和調(diào)用,效率低下,不如原生C#進(jìn)行開發(fā)
1-4-3、基于C#的熱更新方案

使用C#進(jìn)行熱更新方案,上面已經(jīng)提到過了,可以使用DLL替換進(jìn)行代碼更新。

在Android環(huán)境中支持 JIT ,但是IOS不允許獲取具有可執(zhí)行權(quán)限的內(nèi)存空間,這就直接要求 JIT 要以full
AOT 模式,這種模式把IL直接翻譯成機(jī)器碼而不是在運(yùn)行期間。不能通過DLL文件直接更新代碼。

這種形式下,要不就放棄IOS平臺,只針對Android或Win環(huán)境進(jìn)行熱更新。

要不就使用其他方式。

總結(jié)一下就是更新DLL。

1-4-4、基于C#熱更新方案的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

  • Unity開發(fā)均使用C#,開發(fā)語言統(tǒng)一,編碼更容易。
  • 使用純C#開發(fā)無需另創(chuàng)虛擬機(jī)等環(huán)境,效率高,性能遠(yuǎn)高于Lua

缺點(diǎn):

  • 方案均有各自的局限性,直接反射方式不僅損耗性能,在不支持JIT的系統(tǒng)(IOS)上無法使用。
  • ILRuntime解決了 JIT 的問題但不夠成熟,使用問題較多,需要較高的動手解決問題能力。

解決方案:

  • DLL反射熱更新: 使用編譯后的DLL文件進(jìn)行替換,利用反射方式把所需C#組件綁定到相應(yīng)的對象上使用。
  • ILRuntime:本質(zhì)還是DLL的替換,但實現(xiàn)了一個 ILR 使其能夠在不支持 JIT 的硬件環(huán)境(IOS)下實現(xiàn)代碼熱更新。

二、C#熱更新方案HybridCLR介紹

介紹了C#熱更新方案的優(yōu)缺點(diǎn),就說一下這篇文章的主角,HybridCLR: C#熱更新方案。

2-1、簡介

HybridCLR是一個特性完整、零成本、高性能、低內(nèi)存的近乎完美的c#熱更新方案。

HybridCLR提供一個非常完整的跨平臺 CLR 運(yùn)行時,不僅能在Android平臺,也能在IOS、Consoles等限制了JIT的平臺上高效地以 AOT +interpreter混合模式執(zhí)行。

Unity開發(fā)者從此可以完全使用c#開發(fā),并且零成本使用幾乎所有的c#特性,再也不需要使用各種腳本或者不完整的熱更新方案了。

>> github 倉庫hybridclr <<

2-2、優(yōu)點(diǎn)

  • 特性完整。 近乎完整實現(xiàn)了ECMA-335規(guī)范,除了 下文中"限制和注意事項" 之外的特性都支持。
  • 零學(xué)習(xí)和使用成本。 HybridCLR是完整的 CLR 運(yùn)行時,熱更新代碼與 AOT 代碼無縫工作。不需要額外寫- - 任何特殊代碼、沒有代碼生成,也沒有什么特殊限制。腳本類與 AOT 類在同一個運(yùn)行時內(nèi),即使反射、多線程(volatile、ThreadStatic、Task、async)之類的代碼都能夠正常工作。
  • 執(zhí)行高效。實現(xiàn)了一個極其高效的寄存器解釋器,所有指標(biāo)都大幅優(yōu)于其他熱更新方案。性能測試報告
  • 內(nèi)存高效。 熱更新腳本中定義的類跟普通c#類占用一樣的內(nèi)存空間,遠(yuǎn)優(yōu)于其他熱更新方案。內(nèi)存占用報告
  • 原生支持修復(fù) AOT 部分代碼。不額外增加任何開發(fā)和運(yùn)行開銷。

2-3、工作原理

HybridCLR擴(kuò)充了unity的 il2cpp runtime,將它由純AOT運(yùn)行時改造為"AOT + Interpreter"混合運(yùn)行方式,從底層徹底支持了熱更新dll。

hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
更具體地說,HybridCLR做了一下幾點(diǎn)工作:

  • 實現(xiàn)了一個高效的元數(shù)據(jù)(dll)解析庫
  • 改造了 il2cpp 的元數(shù)據(jù)管理模塊,實現(xiàn)了元數(shù)據(jù)的動態(tài)注冊
  • 實現(xiàn)了一個IL指令集到自定義的寄存器指令集的compiler
  • 實現(xiàn)了一個高效的寄存器解釋器
  • 額外提供大量的instinct函數(shù),提升解釋器性能
  • 提供hotfix AOT 的支持

2-4、與其他熱更新方案的區(qū)別

其他熱更新方案方案:

使用獨(dú)立虛擬機(jī),與 il2cpp 的關(guān)系本質(zhì)上相當(dāng)于mono中嵌入lua。

因為類型系統(tǒng)不統(tǒng)一,為了讓熱更新類型能夠繼承 AOT 類型,需要寫適配器,而且解釋器中的類型不能為主工程點(diǎn)的類型系統(tǒng)所識別。

特性不不完整、開發(fā)麻煩、運(yùn)行效率底下。

HybridCLR熱更新方案

這是原生的C#熱更新方案,il2cpp 相當(dāng)于mono的 AOT 模塊,HybridCLR相當(dāng)于 monoiterpreter 模塊,兩者合一成為完成 mono 。

HybridCLR通過System.Reflection.Assembly.Load動態(tài)加載dll,從而支持ios平臺的熱更新。

HybridCLR由原生runtime實現(xiàn),可以與其他主工程AOT部分類型相等并且統(tǒng)一,可以任意調(diào)用、繼承、反射、多線程,不需要再寫適配器。

2-5、支持版本

  • 支持所有il2cpp平臺,包括PC(Win32和Win64)、Android(armv7、armv8)、NS、WEBGL平臺。
  • 支持Unity 2020-2021所有LTS版本

三、C#熱更新方案HybridCLR的使用

3-1、快速開始

說在前面:本教程了為了適應(yīng)更多童鞋,教程比較詳細(xì),動手能力強(qiáng)的小伙伴可以直接訪問 官網(wǎng)地址 自行摸索也可。

3-1-1、將示例項目下載下來

https://github.com/focus-creative-games/hybridclr_trial

hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
打不開Github的也可以直接使用CSDN下載:https://download.csdn.net/download/q764424567/86338805

3-1-2、安裝Unity,安裝C++模塊,打開項目

(1)安裝Unity 2020.3.33,版本:2020.3.33f1

安裝Unity 2020.3.33f1 記得安裝WIndows Build Support (II2CPP)模塊:
hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
PS:沒有這個版本的記得安裝一下,HybridCLR目前只支持2020-2021的LTS版本。

(2)Visual Studio 添加 C++模塊:
hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
PS:IL2CPP模塊和C++模塊是必須安裝的

(3)打開示例工程:
hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
打開后,控制臺會報一個錯誤:
hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
是讓我們安裝il2cpp。

3-1-3、安裝il2cpp

(1)找到自己 Unity/2020.3.33f1c2/Editor/Data/il2cpp文件夾:
hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
比如我的路徑:
F:\Frank_Software\Unity\2020.3.33f1c2\Editor\Data\il2cpp

(2)找到項目目錄下的HybridCLRDData文件夾,進(jìn)入這個文件夾:
hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
找到init_local_il2cpp_data.bat文件,右鍵選擇編輯:
hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
將IL2CPP_PATH的路徑改成自己的Unity/2020.3.33的il2cpp路徑:
hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
(3)保存文件后,雙擊init_local_il2cpp_data.bat文件:

hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
這種情況是git沒有安裝,安裝Git后重試。
hybridclr,# Unity3D之日常開發(fā),c#,unity,lua

3-1-4、打包運(yùn)行程序

在菜單欄選擇Build→Win64:
hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
運(yùn)行之后:
hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
在打包的過程中可能會遇到很多問題,打包失敗。

可能但不包括的問題有:

  • Unity沒有安裝II2CPP模塊
  • VS沒有安裝c++模塊
  • bat腳本沒有更新,要用最新的bat腳本

出現(xiàn)問題后排查一下問題。

3-1-5、進(jìn)行熱更新

先運(yùn)行一下打包出來的程序:
hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
打開Unity工程,修改Assets/HotFix2/App.cs腳本的內(nèi)容,在Main函數(shù)中增加一行Log:

hybridclr,# Unity3D之日常開發(fā),c#,unity,lua

HotFix和HotFix2文件存放的熱更新的文件

在菜單欄點(diǎn)擊HybridCLR→BuildBundles→ActiveBuildTarget,重新打一個ab包:

hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
將目錄hybridclr_trial-main\Assets\StreamingAssets下的文件復(fù)制到
Release-Win64\HybridCLRTrial_Data\StreamingAssets目錄:
hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
這就完成了熱更新文件的替換,重新運(yùn)行程序就可以看到剛剛修改的日志輸出代碼已經(jīng)生效:

hybridclr,# Unity3D之日常開發(fā),c#,unity,lua

3-2、常見問題

總結(jié)一下遇到的問題吧。

3-2-1、目前選擇的腳本后端(IL2CPP)沒有安裝。

hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
解決方法:

安裝Unity 2020.3.33f1 記得安裝WIndows Build Support (II2CPP)模塊。
hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
VS記得安裝c++模塊
hybridclr,# Unity3D之日常開發(fā),c#,unity,lua

3-2-2、打包錯誤:IL2CPP.Building.BuilderFaiedeXcveption il2cpp-api.cpp

hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
解決方法:

更新一個bat腳本,也就是這個東西:
hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
最新的bat文件可以看這里:
https://github.com/focus-creative-games/hybridclr_trial/blob/main/HybridCLRData/init_local_il2cpp_data.bat

hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
全選替換一下即可。

3-2-3、在“GameAssembly”中找不到名為“HuatuoApi_LoadMetadataForAOTAssembly”的入口點(diǎn)。

這個主要是HotFix2文件中App.cs的這個函數(shù):
hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
在LoadMetadataForAOTAssembly方法中,載入了dll,使用了裁剪之前的版本。

可以參照HybridCLR_trial項目,在BuildProcessor中,生成裁剪后的dll后,將dll拷貝到他處。

更簡單的方法是:干掉這個函數(shù)(用上的時候再研究)。

3-3、相關(guān)工具推薦

3-3-1、熱更新框架UnityGameFramework_HybridCLR

hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
一鍵生成環(huán)境:
hybridclr,# Unity3D之日常開發(fā),c#,unity,lua

3-3-2、無感知邏輯熱更工具 Assemblies-Hotfix-Toolkit-Unity

hybridclr,# Unity3D之日常開發(fā),c#,unity,lua
主要功能:
(1)對指定的熱更程序集進(jìn)行校驗:
a. 引用框為空則警示
b. 識別編輯器程序集并警示
c. 識別被默認(rèn)程序集引用并警示(默認(rèn)程序集:Assembly-CSharp.dll,Assembly-CSharp-firstpass.dll)
d. 如果熱更程序集被引用,則展示被引用的程序集并提示需要修復(fù)
(2)熱更程序集在 Addressables 打包時自動轉(zhuǎn)存為 .bytes 文件并打包到 ab 中
(3)將 .bytes 文件及其配置文件 自動加入 Addressables Group
(4)對加載的程序集自動進(jìn)行拓?fù)渑判?,保證程序集按正確的引用順序加載

3-3–3、Unity框架 TEngine

TEngine是一個簡單(新手友好)且強(qiáng)大的Unity框架,對于需要一套上手快、文檔清晰、高性能且可拓展性極強(qiáng)的開發(fā)者或者團(tuán)隊來說是一個很好的游戲開發(fā)框架解決方案。

hybridclr,# Unity3D之日常開發(fā),c#,unity,lua

四、后記

官方網(wǎng)站HybridCLR文檔 (focus-creative-games.github.io)

HybridCLR(臥龍wolong)
新手群:428404198
進(jìn)階群:651188171

倉庫:
HybridCLR
https://github.com/focus-creative-games/hybridclr
https://gitee.com/focus-creative-games/hybridclr

il2cpp_plus
https://github.com/focus-creative-games/il2cpp_plus
https://gitee.com/focus-creative-games/il2cpp_plus


你的點(diǎn)贊就是對博主的支持,有問題記得留言:

Unity愛好者交流群:1040082875

主頁有聯(lián)系方式。

博主還有跟多寶藏文章等待你的發(fā)掘哦:文章來源地址http://www.zghlxwxcb.cn/news/detail-793103.html

專欄 方向 簡介
Unity3D開發(fā)小游戲 小游戲開發(fā)教程 分享一些使用Unity3D引擎開發(fā)的小游戲,分享一些制作小游戲的教程。
Unity3D從入門到進(jìn)階 入門 從自學(xué)Unity中獲取靈感,總結(jié)從零開始學(xué)習(xí)Unity的路線,有C#和Unity的知識。
Unity3D之UGUI UGUI Unity的UI系統(tǒng)UGUI全解析,從UGUI的基礎(chǔ)控件開始講起,然后將UGUI的原理,UGUI的使用全面教學(xué)。
Unity3D之讀取數(shù)據(jù) 文件讀取 使用Unity3D讀取txt文檔、json文檔、xml文檔、csv文檔、Excel文檔。
Unity3D之?dāng)?shù)據(jù)集合 數(shù)據(jù)集合 數(shù)組集合:數(shù)組、List、字典、堆棧、鏈表等數(shù)據(jù)集合知識分享。
Unity3D之VR/AR(虛擬仿真)開發(fā) 虛擬仿真 總結(jié)博主工作常見的虛擬仿真需求進(jìn)行案例講解。
Unity3D之插件 插件 主要分享在Unity開發(fā)中用到的一些插件使用方法,插件介紹等
Unity3D之日常開發(fā) 日常記錄 主要是博主日常開發(fā)中用到的,用到的方法技巧,開發(fā)思路,代碼分享等
Unity3D之日常BUG 日常記錄 記錄在使用Unity3D編輯器開發(fā)項目過程中,遇到的BUG和坑,讓后來人可以有些參考。

到了這里,關(guān)于【Unity3D熱更新】Unity3D 零成本、高性能的C#的熱更新框架:HybridCLR的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Unity3D :運(yùn)行時 UI 的性能注意事項

    Unity3D :運(yùn)行時 UI 的性能注意事項

    推薦:將 NSDT場景編輯器 加入你的3D工具鏈 3D工具集: NSDT簡石數(shù)字孿生 本頁介紹如何提高運(yùn)行時的性能 用戶界面 . 您可以使用? usageHints ?來設(shè)置元素在運(yùn)行時的使用方式,以便相應(yīng)地優(yōu)化數(shù)據(jù)存儲。例如: 下表通過示例描述了要用于哪些元素的屬性: 具有以下元素 使用這

    2024年02月12日
    瀏覽(18)
  • LLM 模型融合實踐指南:低成本構(gòu)建高性能語言模型

    LLM 模型融合實踐指南:低成本構(gòu)建高性能語言模型

    編者按 :隨著大語言模型技術(shù)的快速發(fā)展,模型融合成為一種低成本但高性能的模型構(gòu)建新途徑。本文作者?Maxime Labonne?利用?mergekit?庫探索了四種模型融合方法:SLERP、TIES、DARE和passthrough。通過配置示例和案例分析,作者詳細(xì)闡釋了這些算法的原理及實踐操作。 作者的核

    2024年02月22日
    瀏覽(48)
  • 【斯坦福】FrugalGPT: 如何使用大型語言模型,同時降低成本并提高性能

    【斯坦福】FrugalGPT: 如何使用大型語言模型,同時降低成本并提高性能

    FrugalGPT: 如何使用大型語言模型,同時降低成本并提高性能 作者:Lingjiao Chen, Matei Zaharia, James Zou 本文介紹了一種新穎的方法,旨在解決使用大型語言模型(LLM)時面臨的成本和性能挑戰(zhàn)。隨著GPT-4和ChatGPT等LLM的日益流行,我們需要找到降低這些模型推理成本的策略。作者強(qiáng)調(diào)

    2024年02月11日
    瀏覽(30)
  • 如何讓ES低成本、高性能?滴滴落地ZSTD壓縮算法的實踐分享

    如何讓ES低成本、高性能?滴滴落地ZSTD壓縮算法的實踐分享

    前文分別介紹了滴滴自研的ES強(qiáng)一致性多活是如何實現(xiàn)的、以及如何提升ES的性能潛力。由于滴滴ES日志場景每天寫入量在5PB-10PB量級,寫入壓力和業(yè)務(wù)成本壓力大,為了提升ES的寫入性能,我們讓ES支持ZSTD壓縮算法,本篇文章詳細(xì)展開滴滴在落地ZSTD壓縮算法上的思考和實踐。

    2024年02月13日
    瀏覽(21)
  • unity3d:asset store上C#代碼熱重載插件,不需要重運(yùn)行,重新加載更新后函數(shù)

    unity3d:asset store上C#代碼熱重載插件,不需要重運(yùn)行,重新加載更新后函數(shù)

    https://assetstore.unity.com/packages/tools/utilities/hot-reload-edit-code-without-compiling-250972?clickref=1011lwHg8abvutm_source=partnerizeutm_medium=affiliateutm_campaign=unity_affiliate#description ●方法1:通過導(dǎo)航到Unity菜單欄中的“窗口”打開熱重裝窗口,然后選擇“熱重裝”。 ●方法2:使用快捷鍵組合“Alt+Shift

    2024年02月02日
    瀏覽(24)
  • 工業(yè)級高性能3D模型渲染引擎,專注于3D Web輕量化!

    工業(yè)級高性能3D模型渲染引擎,專注于3D Web輕量化!

    一、技術(shù)概覽 HOOPS Communicator?是一個SDK,用于在Web瀏覽器中開發(fā)3D工程應(yīng)用程序,重點(diǎn)在于: 完全訪問工程數(shù)據(jù) 使用方便 快速發(fā)展 高性能可視化 快速模型流 靈活使用和部署 點(diǎn)擊此處獲取3D模型輕量化及格式轉(zhuǎn)換解決方案 它的主要組件是?HOOPS?Web查看器,這是一個功能強(qiáng)大

    2024年02月07日
    瀏覽(28)
  • unity3D基礎(chǔ)操作之01--unity3d窗口界面介紹

    unity3D基礎(chǔ)操作之01--unity3d窗口界面介紹

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 1、Scene場景編輯窗口; 2、Game游戲運(yùn)行窗口; 3、Hierarchy場景物體列表窗口; 4、Project項目資源列表窗口; 5、Inspector屬性編輯列表窗口; 6、其他常調(diào)節(jié)窗口 在屏幕左上方為場景編輯窗口Scene,在場景編

    2024年02月06日
    瀏覽(31)
  • 【Unity3D日常開發(fā)】Unity3D中協(xié)程的使用

    【Unity3D日常開發(fā)】Unity3D中協(xié)程的使用

    推薦閱讀 CSDN主頁 GitHub開源地址 Unity3D插件分享 簡書地址 我的個人博客 大家好,我是佛系工程師 ☆恬靜的小魔龍☆ ,不定時更新Unity開發(fā)技巧,覺得有用記得一鍵三連哦。 最近有小伙伴問協(xié)程怎么用、怎么寫,我也是會用會寫,但是原理不是很明白。 學(xué)習(xí)了一下,總結(jié)出

    2024年02月12日
    瀏覽(30)
  • 【Unity3D-01】 記錄Unity3D調(diào)用外接攝像頭

    【Unity3D-01】 記錄Unity3D調(diào)用外接攝像頭

    最近想在Unity3D上調(diào)用一個攝像頭,通過查找資料發(fā)現(xiàn)仙魁XAN和八哥快走開的博客符合我的想法,實現(xiàn)起來也不難就嘗試了一下 2.1 在這個工程里新建Canvas 如下圖所示 然后下設(shè)RawImage為載體 2.2 在Assets里面新建一個腳本命名為PlaneManager.cs 代碼內(nèi)容如下(參考八哥快走開的博客)

    2024年02月04日
    瀏覽(30)
  • 【Unity3D小功能】Unity3D中實現(xiàn)Text顯示版本功能

    【Unity3D小功能】Unity3D中實現(xiàn)Text顯示版本功能

    推薦閱讀 CSDN主頁 GitHub開源地址 Unity3D插件分享 簡書地址 我的個人博客 大家好,我是佛系工程師 ☆恬靜的小魔龍☆ ,不定時更新Unity開發(fā)技巧,覺得有用記得一鍵三連哦。 在項目開發(fā)中,會遇到要控制版本的情況,比如說對比版本號,版本不對再更新版本的功能,這些就是

    2024年02月05日
    瀏覽(99)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包