1. 程式人生 > >AB包

AB包

好久沒弄AssetBundle了 最近又試了下,發現打包和載入還是比之前的變化蠻大的,都差點弄不出來。

廢話也不多說了直接上程式碼,註釋比較多,基本在程式碼中就能看懂了

打包

 

DoAssetbundle.cs       C#  
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 using UnityEngine; using System.Collections; using UnityEditor; using System.IO;   public class DoAssetbundle : MonoBehaviour {     
      /// <summary>     /// 檢視所有的Assetbundle名稱(設定Assetbundle Name的物件)     /// </summary>     [MenuItem("AssetBundle/Get AssetBundle names")]
    static void GetNames()     {         var names = AssetDatabase.GetAllAssetBundleNames(); //獲取所有設定的AssetBundle         foreach (var name in names)             Debug.Log("AssetBundle: " + name);     }       /// <summary>     /// 自動打包所有資源(設定了Assetbundle Name的資源)     /// </summary>     [MenuItem("AssetBundle/Create PC AssetBundles")] //設定編輯器選單選項     static void CreateAllAssetBundles()     {         //打包資源的路徑,打包在對應平臺的資料夾下         string targetPath = Application.dataPath + "/StreamingAssets/PCAssetsResources/";         if(!Directory.Exists(targetPath))         {             Directory.CreateDirectory(targetPath);         }           //打包資源         BuildPipeline.BuildAssetBundles(targetPath, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);                  //重新整理編輯器         AssetDatabase.Refresh();     }     [MenuItem("AssetBundle/Create Android AssetBundles")] //設定編輯器選單選項     static void CreateAndroidAssetBundles()     {         //打包資源的路徑,打包在對應平臺的資料夾下         string targetPath = Application.dataPath + "/StreamingAssets/AndroidAssetsResources/";         if (!Directory.Exists(targetPath))         {             Directory.CreateDirectory(targetPath);         }           //打包資源         BuildPipeline.BuildAssetBundles(targetPath, BuildAssetBundleOptions.None, BuildTarget.Android);           //重新整理編輯器         AssetDatabase.Refresh();     }     [MenuItem("AssetBundle/Create IOS AssetBundles")] //設定編輯器選單選項     static void CreateIOSAssetBundles()     {         //打包資源的路徑,打包在對應平臺的資料夾下         string targetPath = Application.dataPath + "/StreamingAssets/IOSAssetsResources/";         if (!Directory.Exists(targetPath))         {             Directory.CreateDirectory(targetPath);         }           //打包資源         BuildPipeline.BuildAssetBundles(targetPath, BuildAssetBundleOptions.None, BuildTarget.iOS);           //重新整理編輯器         AssetDatabase.Refresh();     }       /// <summary>     /// 將某一資料夾中的資源進行分離打包,即把依賴資源分離出來打包     /// </summary>     [MenuItem("AssetBundle/Set Main AssetbundleName")]     public static void SetMainAssetBundleName()     {         string fullPath = Application.dataPath + "/AssetBundle/MainAssets/";    //將Assets/Prefab/資料夾下的所有預設進行打包           SetAssetBundleName(fullPath, true);     }       /// <summary>     /// 將某一資料夾中的資源進行整體打包,即不分離依賴資源,全部打成一個資源包     /// </summary>     [MenuItem("AssetBundle/Set Total Assetbundle Name")]     public static void SetTotalAssetBundleName()     {         string fullPath = Application.dataPath + "/AssetBundle/TotalAssets/";    //將Assets/Prefab/資料夾下的所有預設進行打包           SetAssetBundleName(fullPath, false);     }         /// <summary>     /// 設定資源的資源包名稱     /// </summary>     /// <param name="path">資源主路徑</param>     /// <param name="ContainDependences">資源包中是否包含依賴資源的標誌位:true表示分離打包,false表示整體打包</param>     static void SetAssetBundleName(string path, bool ContainDependences = false)     {         //ClearAssetBundlesName();    //先清楚之前設定過的AssetBundleName,避免產生不必要的資源也打包           if (Directory.Exists(path))         {             EditorUtility.DisplayProgressBar("設定AssetName名稱", "正在設定AssetName名稱中...", 0f);   //顯示程序載入條             DirectoryInfo dir = new DirectoryInfo(path);    //獲取目錄資訊             FileInfo[] files = dir.GetFiles("*", SearchOption.AllDirectories);  //獲取所有的檔案資訊             for (var i = 0; i < files.Length; ++i)             {                 FileInfo fileInfo = files[i];                 EditorUtility.DisplayProgressBar("設定AssetName名稱", "正在設定AssetName名稱中...", 1f * i / files.Length);                 if (!fileInfo.Name.EndsWith(".meta"))   //判斷去除掉副檔名為“.meta”的檔案                 {                     string basePath = "Assets" + fileInfo.FullName.Substring(Application.dataPath.Length);  //編輯器下路徑Assets/..

相關推薦

AB

好久沒弄AssetBundle了 最近又試了下,發現打包和載入還是比之前的變化蠻大的,都差點弄不出來。 廢話也不多說了直接上程式碼,註釋比較多,基本在程式碼中就能看懂了 打包   DoAssetbundle.cs  

AB框架

1. 為啥有AB包? 因為資源需要更新, 避免更新一次打包一次 動態修改. 2. AB包注意啥? 依賴關係 找依賴關係應該找到對應的平臺!!! 3. 打包策略是分場景打包 若檔案被資料夾包含打包出來的就是資料夾的名字 否則是場景資料夾名稱 4. 當我AB包從硬碟載入完成之後 是不是就該載

資源載入+AB框架

1. 為啥要有AB包? 因為資源需要更新,避免更新一次打包一次,動態修改 2. AB包注意啥? 依賴關係 找依賴關係應該找到對應的平臺!!! 3. 打包策略是分場景打包 若檔案被資料夾包含打包出來的就是資料夾的名字 否則是場景資料夾名稱 4. 當我AB包從硬碟

Unity編輯器開發(三):實戰、開發一個AB編輯器工具

前言 本系列將會從零開始開發一個輕量級的AB包編輯器工具(也就是打包或者管理AssetBundle的工具),完成以後,他的最終應用介面可能是如下這樣的: 介面詳解: 1、Create:建立一個新的空的AB包; 2、Rename:重新命名當前選中的AB

模塊與

文件 clas cal 12px ... log 綁定 運行 查看 一:模塊 一個模塊就是一個包含了python定義和聲明的文件,文件名就是模塊名字加上.py的後綴。 模塊分類有:1:內建模塊,python‘自帶’的模塊,如os、sys 2

V4或者V7重復沖突,但是不知道刪除那個的問題

androi config module exclude depend not mod pre com 加這行代碼在dependencies統一級別 configurations { all*.exclude group: ‘com.android.support

HDU 1114 Piggy-Bank(完全背

ask style span ica ace eno eterm ++ empty 題目: Before ACM can do anything, a budget must be prepared and the necessary financial support o

Visual Studio 2017各版本安裝離線下載、安裝全解析

pla 離線文件 win10 unit splay and 文件下載 python擴展 erl 轉自 寂靜·櫻花雨 Visual Studio 2017各版本安裝包離線下載、安裝全解析 感謝IT之家網友 寂靜·櫻花雨 的投稿 關於Visual

用dialog制作窗口

info 註意 ext inf spa mem mktemp ear selection 1 #!/bin/bash 2 3 temp=$(mktemp -t test.XXXXXX) 4 temp2=$(mktemp -t test.XXXXXX) 5

Python篇1.15---模塊與

def lob 是否 函數 16px ont 針對 自己的 bsp 一.模塊 1 什麽是模塊? 一個模塊就是一個包含了python定義和聲明的文件,文件名就是模塊名字加上.py的後綴。 2 為何要使用模塊? 如果你退出python解釋器然後重新進入,那麽你之

linux tcpdump抓

第一個 一個 指定 不顯示 源地址 主機名 linux 時間 主機 tcpdump 默認抓取第一個網卡的所有數據包 tcpdump -i eth0 指定網卡 tcpdump host 10.10.10.10 指定主機名或ip地址 tcpdump host 10.10.10

linux簡單命令8---軟件安裝

yum安裝 .com 軟件包 rpm http span 軟件包安裝 image size 1:使用yum安裝,它不能包查詢和包校驗。它安裝的是RPM格式文件。沒有yum文件 ------------------------------------------

動態規劃背問題 洛谷P1064 金明的預算方案

輸出 ret 設計 div 輸入輸出 style 乘號 輸入輸出格式 sin P1064 金明的預算方案 題目描述 金明今天很開心,家裏購置的新房就要領鑰匙了,新房裏有一間金明自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說:“你的房間需要購買哪些物品,怎麽布置,你

python/socket編程之粘

處理機制 滿了 bytes true src exceptio 協議 粘包問題 時間間隔 python/socket編程之粘包 粘包: 只有TCP有尿包現象,UDP永遠不會粘包。 首先需要掌握一個socket收發消息的原理 發送端可以是1k,1k的發送數據而接受端的應用程

python--socket粘

不能 第一個 unp pen () 取出 tar world 緩沖 socket粘包 1 什麽是粘包 須知:只有TCP有粘包現象,UDP永遠不會粘包,首先需要掌握一個socket收發消息的原理, 所謂粘包問題主要還是因為接收方不知道消息之間的界限,不知道一次性提取多少字節的

Failed to read artifact descriptor for xxx:jar 的Maven項目jar依賴配置的問題解決

描述 tin ava 打開 文件 我們 記事本 last .com 在開發的過程中,尤其是新手,我們經常遇到Maven下載依賴jar包的問題,也就是遇到“Failed to read artifact descriptor for xxx:jar”的

使用閉和代理和Segue進行反向傳值

closure create 賦值 返回 protocol alt 類型 del uiview import UIKit class FirstViewController: UIViewController, SecondViewControllerDelegate

socket tcp 粘解決

connect line 應該 字節 unpack otto stdout except soc 何為粘包: 先看代碼 session=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 在定義socket對象的時候 有兩個參數

LaTeX-手動安裝宏(package)以及生成幫助文檔的整套流程

tor hang width 下載地址 ner file href win 7 blog 我使用的是ctex套裝,本來已經自帶了許多package,但是有時候還是需要使用一些沒有預裝的宏包,這時就需要自己安裝package了。下載package可以從CTAN(Compreh

BZOJ3163&Codevs1886: [Heoi2013]Eden的新背問題[分治優化dp]

一行 data gis table 一個 ans 進制 玩偶 printf 3163: [Heoi2013]Eden的新背包問題 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 428 Solved: 277[Subm