Skip to content

Instantly share code, notes, and snippets.

@yaeda
Created April 18, 2013 07:30
Show Gist options
  • Save yaeda/5410868 to your computer and use it in GitHub Desktop.
Save yaeda/5410868 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);
// }
// }
}
@kathees
Copy link

kathees commented Jul 17, 2015

I've used your ExportAssetBundle.cs script for create .android.unity3d asset files. It was working fine but today when i tried, i got below error. I don't know whats happened,

Building Asset Bundles requires Unity Advanced for AndroidPlayer
UnityEditor.BuildPipeline:BuildAssetBundle(Object, Object[], String, BuildAssetBundleOptions, BuildTarget)
ExportAssetBundles:ExportResurce() (at Assets/Editor/ExportAssetBundles.cs:21)

@ssuresh1295
Copy link

What is the procedure to export AssetBundle? And How to call AssetBundleSample.cs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment