真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

從IIS網(wǎng)站上下載AssetBundle,并寫入到本地磁盤指-創(chuàng)新互聯(lián)

啊,長嘆一聲,弄了一晚上,加半個白天

創(chuàng)新互聯(lián)于2013年開始,先為田東等服務(wù)建站,田東等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為田東企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

先說說歷程吧,主要是踩的坑。

首先打包就不用說了。有.asseetbundle的,有.u3d的,還有就是生成md5列表

然后下載并保存就惡心了。

本來想的很好,思路其實(shí)也正確。

AssetBundle生成到StreamingAssets文件夾下
我在本機(jī)上(win10x64),IIS開了個站,開了FTP,用FileZilla把StreamingAssets文件夾上傳到站上。
這樣這些AssetBundle就有了url:“http://localhost:9999/StreamingAssets/a.assetbundle”

上傳后,把本地的StreamingAssets文件夾刪掉,程序中判斷如果沒有這個文件夾,則創(chuàng)建,下載md5列表文件,按文件中列出的文件列表把遠(yuǎn)程服務(wù)器上的所有assetbundle下載到本地來。這個過程的代碼就不說了,不復(fù)雜,執(zhí)行的也很順利。主要是從下面開始坑了。

用WWW,從遠(yuǎn)程url地址下載,再用二進(jìn)制寫入本地路徑文件

string localFilePath = "...";         //要保存到本地的文件全路徑
string savePath = "...";               //文件存儲的文件夾
string url = "http://...";                  //要下載的遠(yuǎn)程文件地址

//判斷一下文件要存儲的文件夾是否存在,不存在則創(chuàng)建
if(!Directory.Exists(savePath))
{
        Directory.CreateDirectory(savePath);
}

//下載
using(WWW www = new WWW(url))
{
        yield return www;
        if(www.error == null && www.isDone)
        {
                //寫入本地文件
                File.WriteAllBytes(localFilePath, www.bytes);
        }
}

好的,到此為止,沒有任何錯誤,StreamingAssets文件夾里的所有東東都下載到本地了,看文件大小好像也沒有問題。

既然下載下來了,就得用啊,還是用WWW吧

string localFilePath="file:///..";             //本地要加載的AssetBundle文件路徑
using(WWW www = new WWW(localFilePath))
{
        yield return www;
        if(www.error ==null && www.isDone)
        {
                AssetBundle ab = www.assetBundle;
                GameObject go = ab.LoadAsset("go");
        }
}

就在這一步

AssetBundle ab = www.assetBundle;

報錯了:
Failed to decompress data for the AssetBundle 'Memory'`

但是請注意,用new WWW(localFilePath) 加載是沒有任何問題的。

百撕不得其姐,于是搜索引擎查唄

一種說法是FileZilla向網(wǎng)站上傳時要設(shè)置二進(jìn)制

從IIS網(wǎng)站上下載AssetBundle,并寫入到本地磁盤指

好吧,設(shè)置了,刪掉重新上傳,還是這樣

于是把上傳的文件直接拷貝過來,而不是在程序中用WWW下載,可以用,加載包沒有問題

這就不好玩了,但是能確定的是問題是出在從遠(yuǎn)程下載并保存到本地這個步驟

那就換一種下載方法

用UnityWebRequest

using (UnityWebRequest req = UnityWebRequest.Get(fileUrl))
                        {
                                                        string filePath = "...";
                            string savePath = "...";
                            if (!Directory.Exists(savePath))
                            {
                                Directory.CreateDirectory(savePath);
                            }

                            yield return req.SendWebRequest();
                            if (req.isNetworkError || req.isHttpError)
                            {
                                Debug.LogError(req.downloadHandler.text);
                            }
                            else
                            {
                                File.WriteAllBytes(filePath, req.downloadHandler.data);
                                Debug.Log(fileUrl + " downloaded");
                            }
                        }

這回更有趣,只下載了.manifest文件,而assetbundle還有.u3d這些包沒有下載

看了一下,報的錯是404 File Not Found

底下還提到了MIME映射

度娘查了一下,終于發(fā)現(xiàn)了真正的問題。

程序是沒問題的,思路是正確的,問題出在了IIS的設(shè)置上

具體的說就是MIME的設(shè)置

即IIS中需要對不同的文件類型進(jìn)行MIME映射才能使其類型的文件能在網(wǎng)站端正常的被讀取下載,大概是這個意思。那就設(shè)置吧

win+R

輸入compmgmt.msc回車

從IIS網(wǎng)站上下載AssetBundle,并寫入到本地磁盤指

從IIS網(wǎng)站上下載AssetBundle,并寫入到本地磁盤指

點(diǎn)擊‘添加’

從IIS網(wǎng)站上下載AssetBundle,并寫入到本地磁盤指

如上圖
擴(kuò)展名把你打包的擴(kuò)展名填進(jìn)去,如我是用的assetbundle和u3d
MIME類型中填寫:application/octet-stream

好了,重啟一下網(wǎng)站,再運(yùn)行,OK了,正常下載和加載,出了一個小問題
就是文件夾下名為StreamingAssets的文件,即與文件夾同名,無擴(kuò)展名的文件無法下載

再查一下

還是要設(shè)置MIME,無擴(kuò)展名怎么辦

還是上圖,在文件擴(kuò)展名一欄中填一個點(diǎn)"."
MIME一欄還是填:application/octet-stream

OK了

至于manifest文件,本身就在IIS的默認(rèn)設(shè)置里有

也就是說,用IIS,一定要把你打包的assetbundle文件擴(kuò)展類型設(shè)置MIME,比如你打的包是xxx.ab,那ab就要像這樣設(shè)置MIME映射

再回過頭來,還把UnityWebRequest換回WWW的加載方式,也OK了

即 ,此次問題就是出在IIS的設(shè)置上,思路和程序沒有問題。

總結(jié):

  1. 上傳時用二制方式上傳,因為都是二進(jìn)制文件
  2. IIS的MIME設(shè)置要搞好

問題解決,大滿足

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


當(dāng)前標(biāo)題:從IIS網(wǎng)站上下載AssetBundle,并寫入到本地磁盤指-創(chuàng)新互聯(lián)
當(dāng)前地址:http://weahome.cn/article/cdigci.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部