ローカルのAssetBundleを読み込んで表示させてみよう
前回書いたアセットバンドルを使ってみようでエクスポートするまでは作りました。
ローカルから読み込む場合には作成したアセットバンドルをStreamingAssetsというフォルダを作ってそこに突っ込んだ方が後々よさそうです。
公式にも書いているのでサッと読んでみてください。
今回前回作成したものではなく新しくプロジェクトを作成して作りました。
GameViewに表示されているものをプレハブにしてImageFolderというものに突っ込みました。
これを200個同じものを作りすべてAssetBundle名をimageにしました。
アセットバンドルにすると何がどうかっていうとこの画像を見てもらうとわかると思います。
一つ8KBもあるプレハブが200もあるので1.5MBぐらいになるのですが、アセットバンドルにしてしまうと18KBでおさまります。
Textureとかになるとここまで圧縮するのは厳しいですが…
中規模~の開発になるとどうしてもプロジェクトのサイズが大きくなってしまうので出来る限りアセットバンドルにしてしまった方がよさそうです。
作ったimageという名前のアセットバンドルをStreamingAssetsというフォルダを作ってそこに配置してください。
下記スクリプトを作って自分はHierarchyのCanvasにアタッチしました。
using System; using UnityEngine; using UnityEngine.UI; using System.Collections; public class Getbundle : MonoBehaviour { // Use this for initialization void Start () { StartCoroutine(DownLoad()); } IEnumerator DownLoad() { string bundleUrl = Application.streamingAssetsPath + "/image"; AssetBundleCreateRequest request = AssetBundle.LoadFromFileAsync(bundleUrl); while (!request.isDone) { yield return null; } AssetBundle assetBundle = request.assetBundle; AssetBundleRequest image = assetBundle.LoadAssetAsync<GameObject>("Image 99"); GameObject obj = (GameObject)Instantiate( image.asset ); obj.transform.SetParent(transform, false); obj.GetComponent<RectTransform>().anchoredPosition = new Vector2(2, 2); } }
今回はImage 99という名前のプレハブを取り出しています。
名前を変えれば他のプレハブを取り出すことも可能です。
ちなみにこれプレハブ全部にアセットバンドル名を付けてますが、格納しているフォルダにアセットバンドル名を設定しておけばそのフォルダの中身がアセットバンドルになるみたいなのでアセットバンドルを作る際はつかいたいものをフォルダに突っ込んでフォルダの名前を設定してエクスポートって形でよさそうです。