Skip to content

Instantly share code, notes, and snippets.

@tim-hub
Forked from yaeda/AssetBundleSample.cs
Created April 18, 2016 03:43
Show Gist options
  • Save tim-hub/1a6462271a05c5dd2fcdcadac9e63878 to your computer and use it in GitHub Desktop.
Save tim-hub/1a6462271a05c5dd2fcdcadac9e63878 to your computer and use it in GitHub Desktop.
Unity AssetBundle Examples.
using System;
using UnityEngine;
using System.Collections;
public class AssetBundleSample : MonoBehaviour {
public GUIText guitext;
// Use this for initialization
void Start () {
// Clear Cache
Caching.CleanCache();
string loadUrl = "https://dl.dropboxusercontent.com/u/172835/track";
#if UNITY_ANDROID && !UNITY_EDITOR
loadUrl += ".android.unity3d";
#elif UNITY_IPHONE && !UNITY_EDITOR
loadUrl += ".iphone.unity3d";
#else
loadUrl += ".unity3d";
#endif
StartCoroutine(load(loadUrl, 1));
}
// Update is called once per frame
void Update () {
// progress
int percent = (int)(www.progress * 100);
guitext.text = percent.ToString() + "%";
}
private WWW www;
private IEnumerator load(string url, int version) {
// wait for the caching system to be ready
while (!Caching.ready)
yield return null;
// load AssetBundle file from Cache if it exists with the same version or download and store it in the cache
www = WWW.LoadFromCacheOrDownload(url, version);
yield return www;
Debug.Log("Loaded ");
if (www.error != null)
throw new Exception("WWW download had an error: " + www.error);
AssetBundle assetBundle = www.assetBundle;
Instantiate(assetBundle.mainAsset); // Instantiate(assetBundle.Load("AssetName"));
// Unload the AssetBundles compressed contents to conserve memory
assetBundle.Unload(false);
}
}
// Builds an asset bundle from the selected objects in the project view.
// Once compiled go to "Menu" -> "Assets" and select one of the choices
// to build the Asset Bundle
using UnityEngine;
using UnityEditor;
public class ExportAssetBundles {
[MenuItem("Assets/Build AssetBundle From Selection - Track dependencies")]
static void ExportResurce() {
// Bring up save panel
string basename = Selection.activeObject ? Selection.activeObject.name : "New Resource";
string path = EditorUtility.SaveFilePanel("Save Resources", "", basename, "");
if (path.Length != 0) {
// Build the resource file from the active selection.
Object[] selection = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);
// for Android
BuildPipeline.BuildAssetBundle(Selection.activeObject,
selection, path + ".android.unity3d",
BuildAssetBundleOptions.CollectDependencies |
BuildAssetBundleOptions.CompleteAssets,
BuildTarget.Android);
// for iPhone
BuildPipeline.BuildAssetBundle(Selection.activeObject,
selection, path + ".iphone.unity3d",
BuildAssetBundleOptions.CollectDependencies |
BuildAssetBundleOptions.CompleteAssets,
BuildTarget.iPhone);
// for WebPlayer
BuildPipeline.BuildAssetBundle(Selection.activeObject,
selection, path + ".unity3d",
BuildAssetBundleOptions.CollectDependencies |
BuildAssetBundleOptions.CompleteAssets,
BuildTarget.WebPlayer);
Selection.objects = selection;
}
}
// [MenuItem("Assets/Build AssetBundle From Selection - Track dependencies")]
// static void ExportResource() {
// // Bring up save panel
// string path = EditorUtility.SaveFilePanel("Save Resources", "", "New Resource", "unity3d");
// if (path.Length != 0) {
// // Build the resource file from the active selection.
// Object[] selection = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);
// BuildPipeline.BuildAssetBundle(Selection.activeObject,
// selection,
// path,
// BuildAssetBundleOptions.CollectDependencies |
// BuildAssetBundleOptions.CompleteAssets);
// Selection.objects = selection;
// }
// }
// [MenuItem("Assets/Build AssetBundle From Selection - No dependency tracking")]
// static void ExportResourceNoTrack() {
// // Bring up save panel
// string path = EditorUtility.SaveFilePanel("Save Resource", "", "New Resource", "unity3d");
// if (path.Length != 0) {
// // Build the resource file from the active selection.
// BuildPipeline.BuildAssetBundle(Selection.activeObject, Selection.objects, path);
// }
// }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment