AssetBundle版本跟新對比

2021-10-10 15:35:20 字數 2640 閱讀 4144

文字格式

//獲取res資料夾下所有檔案的相對路徑和md5值

string

files = directory.

getfiles

(respath,

"*", searchoption.alldirectories)

;stringbuilder versions =

newstringbuilder()

;//string extension = filepath.

substring

(files[i]

.lastindexof

("."))

;string relativepath = filepath.

replace

(respath,"")

.replace

("\\"

,"/");

string md5 = pathconfig.

md5file

(filepath)

;//將assetbundle檔案生成md5

versions.

(relativepath).(

",")

.(md5).(

"\r\n");

//生成文字格式

// 生成配置檔案

filestream stream =

newfilestream

(respath + pathconfig.version_file, filemode.create)

;byte

data = encoding.utf8.

getbytes

(versions.

tostring()

);stream.

write

(data,

0, data.length);//

stream.

flush()

; stream.

close()

;c#生成md5碼

var fs =

newfilestream

(path, filemode.open)

;md5cryptoserviceprovider md5provider =

newmd5cryptoserviceprovider()

;byte

buffer = md5provider.

computehash

(fs)

;string resule = bitconverter.

tostring

(buffer);//

resule = resule.

replace

("-",""

);//resule 為最終的md5碼

fs.close()

;

//儲存本地的assetbundle名和對應的md5值

private dictionary<

string

,string

> localresversion;

//資源伺服器上的assetbundle名和對應的md5值

private dictionary<

string

,string

> serverresversion;

//儲存需要更新的assetbundle名

private list<

string

> needdownfiles;

更新流程1,將每乙個assetbundle檔案生成md5

2,將assetbundle檔名(包括字尾)和生成的md5碼儲存到乙個version.txt文字檔案中

3,將version.txt和assetbundle檔案資源存放到資源伺服器中

4,首先載入version.txt檔案並讀取內容資訊

1)如果本地中不存在version.txt檔案,那麼直接將version.txt檔案中的資源全部載入到本地,並儲存version.txt檔案到本地。

2)如果本地存在version.txt檔案,那麼將伺服器中的version.txt檔案中的內容資訊和本地的version.txt檔案中內容資訊進行比較對應md5碼,md5不一致的將對應的assetbundle檔案資源載入到本地。並儲存version.txt檔案到本地。

3)如果本地存在version.txt檔案,並且伺服器中的version.txt檔案內容資訊多於本地的version.txt檔案內容資訊,那麼就多於的資源載入到本地。並儲存version.txt檔案到本地。

Unity5新的AssetBundle系統使用心得

原先的assetbundle系統需要自己寫一大坨匯出的 buildpipeline 這個新手會無從下手,老手也經常會被坑到。想正確處理好資源的依賴關係從而保證資源完整而又不會產生重複資源,確實不是一件非常容易的事情。驗證 包之間的依賴關係等等,是乙個文字檔案。載入資源的時候unity會自動處理好其依...

c const 不斷跟新

1.把乙個 const 物件的位址賦給乙個普通的 非 const 物件的指標也會導致 編譯時的錯誤 const double pi 3.14 double ptr error ptr is a plain pointer const double cptr ok cptr is a pointer ...

本地版本跟svn版本對比 SVN(版本控制)

1.工作原理 客戶端 服務端 2.svn常見操作 1.發布專案 share project 專案組長將本機的專案第一次發布到 倉庫 3.提交 commit 組員將修改後的內同步到伺服器 本地 伺服器 4.更新 update 將伺服器中的最新 同步到本地 伺服器 本地 注意 更新提交操作 要及時 防止...