baobao
7/19/2017 - 1:59 AM

複数のアセットを取り出す

複数のアセットを取り出す

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;

public class Sample : MonoBehaviour
{
	IEnumerator Start ()
	{
		AssetBundle ab = null;
		// AssetBundleロード
		yield return Load ("fuga", x => ab = x);
		// Barを取り出す
		var bar = ab.LoadAsset<TextAsset> ("Bar");
		Debug.Log (bar);
		
		// MaterialHogeとPiyoを取り出す
		var mats = ab.LoadAllAssets<Material> ();
		foreach (var mat in mats)
			Debug.Log (mat);
			
		// 取り出し終えたのでAssetBundleをを破棄する
		ab.Unload (false);
	}

	IEnumerator Load (string abName, System.Action<AssetBundle> callback)
	{
		string path = Application.streamingAssetsPath + "/" + abName;
		byte[] b = File.ReadAllBytes (path);
		AssetBundleCreateRequest req = AssetBundle.LoadFromMemoryAsync (b);
		yield return req;
		callback (req.assetBundle);
	}
}