最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Unity C#打包AssetBundle與場景詳解

 更新時(shí)間:2019年02月27日 15:12:36   作者:冰封百度  
這篇文章主要給大家介紹了關(guān)于Unity C#打包AssetBundle與場景的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

Unity2018已經(jīng)把打包過程簡化很多了

我們只需要關(guān)心兩個(gè)API:

1.BuildPipline.BuildAssetBundles() 打包AssetBundle

2.BuildPipline.BuildPlayer() 打包場景

1.打包AssetBundle

先在資源的Inspector面板最下方 填寫資源所屬的AssetBundle名稱和后綴(后綴可以不填)

再利用BuildPipeline.BuildAssetBundles()進(jìn)行打包

2.打包Scene

利用BuildPipeline.BuildPlayer()進(jìn)行打包

為方便使用 先把要打包的場景放入指定的文件夾 通過腳本批量打包

3.腳本批量打包

4.打包完畢

5.加載測試

6.打包和測試腳本

AssetBundleBuilder.cs

using UnityEngine;
using UnityEditor;
using System.IO;

/// <summary>
/// 資源包打包工具
/// <para>打包AssetBundle和場景(Unity 2018.2.20)</para>
/// <para>ZhangYu 2019-02-26</para>
/// </summary>
public class AssetBundleBuilder
{
 [MenuItem("打包/Windows/資源包和場景")]
 public static void BuildAbsAndScenesWindows() {
  BuildAbsAndScenes(BuildTarget.StandaloneWindows);
 }

 [MenuItem("打包/Android/資源包和場景")]
 public static void BuildAbsAndScenesAndroid() {
  BuildAbsAndScenes(BuildTarget.Android);
 }

 [MenuItem("打包/IOS/資源包和場景")]
 public static void BuildAbsAndScenesIOS() {
  BuildAbsAndScenes(BuildTarget.iOS);
 }

 [MenuItem("打包/Windows/資源包")]
 public static void BuildAbsWindows() {
  BuildAssetBundles(BuildTarget.StandaloneWindows);
 }

 [MenuItem("打包/Android/資源包")]
 public static void BuildAbsAndroid() {
  BuildAssetBundles(BuildTarget.Android);
 }

 [MenuItem("打包/IOS/資源包")]
 public static void BuildAbsIOS() {
  BuildAssetBundles(BuildTarget.iOS);
 }

 [MenuItem("打包/Windows/場景")]
 public static void BuildScenesWindows() {
  BuildScenes(BuildTarget.StandaloneWindows);
 }

 [MenuItem("打包/Android/場景")]
 public static void BuildScenesAndroid() {
  BuildScenes(BuildTarget.Android);
 }

 [MenuItem("打包/IOS/場景")]
 public static void BuildScenesIOS() {
  BuildScenes(BuildTarget.iOS);
 }

 // 打包AssetBundle和Scenes
 public static void BuildAbsAndScenes(BuildTarget platform) {
  BuildAssetBundles(platform);
  BuildScenes(platform);
 }

 // 打包AssetBundles
 private static void BuildAssetBundles(BuildTarget platform) {
  // 輸出路徑
  string outPath = Application.streamingAssetsPath + "/Abs";
  if (!Directory.Exists(outPath)) Directory.CreateDirectory(outPath);
  EditorUtility.DisplayProgressBar("信息", "打包資源包", 0f);
  BuildPipeline.BuildAssetBundles(outPath, BuildAssetBundleOptions.DeterministicAssetBundle, platform);
  AssetDatabase.Refresh();
  Debug.Log("所有資源包打包完畢");
 }

 // 打包Scenes
 private static void BuildScenes(BuildTarget platform) {
  // 指定場景文件夾和輸出路徑
  string scenePath = Application.dataPath + "/AbResources/Scenes";
  string outPath = Application.streamingAssetsPath + "/Abs/";

  if (Directory.Exists(scenePath)) {
   // 創(chuàng)建輸出文件夾
   if (!Directory.Exists(outPath)) Directory.CreateDirectory(outPath);

   // 查找指定目錄下的場景文件
   string[] scenes = GetAllFiles(scenePath, "*.unity");
   for (int i = 0; i < scenes.Length; i++) {
    string url = scenes[i].Replace("\\", "/");
    int index = url.LastIndexOf("/");
    string scene = url.Substring(index + 1, url.Length - index - 1);
    string msg = string.Format("打包場景{0}", scene);
    EditorUtility.DisplayProgressBar("信息", msg, 0f);
    scene = scene.Replace(".unity", ".scene");
    Debug.Log(string.Format("打包場景{0}到{1}", url, outPath + scene));
    BuildPipeline.BuildPlayer(scenes, outPath + scene, BuildTarget.StandaloneWindows, BuildOptions.BuildAdditionalStreamedScenes);
    AssetDatabase.Refresh();
   }
   EditorUtility.ClearProgressBar();
   Debug.Log("所有場景打包完畢");
  }
 }

 /// <summary> 獲取文件夾和子文件夾下所有指定類型文件 </summary>
 private static string[] GetAllFiles(string directory, params string[] types) {
  if (!Directory.Exists(directory)) return new string[0];
  string searchTypes = (types == null || types.Length == 0) ? "*.*" : string.Join("|", types);
  string[] names = Directory.GetFiles(directory, searchTypes, SearchOption.AllDirectories);
  return names;
 }

}

LoadTest.cs

using UnityEngine;
using UnityEngine.SceneManagement;

public class LoadTest : MonoBehaviour {

 private void Start () {
  LoadAB();
  LoadScene();
 }

 // 加載資源包
 private void LoadAB() {
  // 資源包路徑
  string path = Application.streamingAssetsPath + "/Abs/test.ab";

  // WWW下載
  Http http = gameObject.AddComponent<Http>();
  http.get(path, OnLoadABComplete);
 }

 // 加載場景
 private void LoadScene() {
  // 資源包路徑
  string path = Application.streamingAssetsPath + "/Abs/Test.scene";

  // WWW下載
  Http http = gameObject.AddComponent<Http>();
  http.get(path, OnLoadSceneComplete);
 }

 // 加載AssetBundle完畢
 private void OnLoadABComplete(WWW www) {
  // 實(shí)例化預(yù)制
  AssetBundle ab = www.assetBundle;
  Object prefab = ab.LoadAsset("Test");
  GameObject instance = (GameObject)Instantiate(prefab);
  DontDestroyOnLoad(instance);
 }

 // 加載場景完畢
 private void OnLoadSceneComplete(WWW www) {
  // 必須寫www.assetBundle這句 這樣場景才能被讀取到
  AssetBundle ab = www.assetBundle;
  SceneManager.LoadScene("Test");
 }

}

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • 詳解C#異步多線程使用中的常見問題

    詳解C#異步多線程使用中的常見問題

    本文主要介紹了C#異步多線程使用中的常見問題,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C#使用泛型方法實(shí)現(xiàn)操作不同數(shù)據(jù)類型的數(shù)組

    C#使用泛型方法實(shí)現(xiàn)操作不同數(shù)據(jù)類型的數(shù)組

    這篇文章主要為大家詳細(xì)介紹了C#如何使用一個(gè)泛型方法對不同類型的數(shù)組進(jìn)行操作,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下
    2024-02-02
  • C#類的多態(tài)性詳解

    C#類的多態(tài)性詳解

    這篇文章主要為大家詳細(xì)介紹了C#類的多態(tài)性,主要有兩種:一是編譯時(shí)的多態(tài)性,二是運(yùn)行時(shí)的多態(tài)性,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-10-10
  • C#實(shí)現(xiàn)提高xml讀寫速度的方法

    C#實(shí)現(xiàn)提高xml讀寫速度的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)提高xml讀寫速度的方法,并且針對各類文件的讀寫做了較為細(xì)致的分析,非常實(shí)用,需要的朋友可以參考下
    2014-11-11
  • C#實(shí)現(xiàn)Json轉(zhuǎn)DataTable并導(dǎo)出Excel的方法示例

    C#實(shí)現(xiàn)Json轉(zhuǎn)DataTable并導(dǎo)出Excel的方法示例

    這篇文章主要介紹了C#實(shí)現(xiàn)Json轉(zhuǎn)DataTable并導(dǎo)出Excel的方法,結(jié)合實(shí)例形式總結(jié)分析了Json轉(zhuǎn)換DataTable,以及DataTable導(dǎo)出Excel相關(guān)操作技巧,需要的朋友可以參考下
    2019-02-02
  • WPF實(shí)現(xiàn)自定義Panel面板的示例詳解

    WPF實(shí)現(xiàn)自定義Panel面板的示例詳解

    WPF中的Panel(面板),是繼承自FrameworkElement的抽象類,表示一個(gè)可以用來排列子元素的面板,本文主要來和大家聊聊WPF如何實(shí)現(xiàn)自定義Panel,感興趣的可以了解下
    2023-09-09
  • c# 可選參數(shù)、命名參數(shù)

    c# 可選參數(shù)、命名參數(shù)

    設(shè)計(jì)一個(gè)方法的參數(shù)的時(shí),可為部分或全部參數(shù)分配默認(rèn)值。調(diào)用其方法時(shí),可以重新指定分配了默認(rèn)值的參數(shù),也可以使用默認(rèn)值
    2012-10-10
  • 深入c# GDI+簡單繪圖的具體操作步驟(三)

    深入c# GDI+簡單繪圖的具體操作步驟(三)

    前兩篇已經(jīng)基本向大家介紹了繪圖的基本知識(shí).那么,我就用我們上兩篇所學(xué)的,做幾個(gè)例子.我們先來做一個(gè)簡單的--仿QQ截圖
    2013-05-05
  • C#程序優(yōu)化-有效減少CPU占用率

    C#程序優(yōu)化-有效減少CPU占用率

    本文給大家介紹的是C#程序優(yōu)化的小技巧,通過此方法可以有效的降低CPU的占用率,十分的簡單實(shí)用,有需要的小伙伴可以參考下。
    2015-06-06
  • c# socket心跳超時(shí)檢測的思路(適用于超大量TCP連接情況下)

    c# socket心跳超時(shí)檢測的思路(適用于超大量TCP連接情況下)

    這篇文章主要介紹了c# socket心跳超時(shí)檢測的思路(適用于超大量TCP連接情況下),幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03

最新評論

上思县| 界首市| 江阴市| 凤庆县| 杨浦区| 泽库县| 库伦旗| 莱芜市| 三穗县| 班戈县| 泸州市| 浦北县| 青阳县| 兴义市| 崇文区| 灵川县| 南和县| 茌平县| 江孜县| 阿拉善盟| 寿光市| 新津县| 石柱| 兰溪市| 安陆市| 城口县| 绵竹市| 昌邑市| 天祝| 灵石县| 桃园市| 天镇县| 启东市| 长海县| 朝阳市| 泸州市| 涟水县| 五华县| 崇明县| 吉安市| 屏东市|