/// <summary> /// 読み込み済みサブアセットの取得 /// </summary> /// <param name="assetBundleName">取得したいサブアセットが含まれているアセットバンドル名</param> /// <param name="assetName">取得したいサブアセット名</param> public T[] GetLoadedSubAssets <T>(string assetBundleName, string assetName) where T : UnityEngine.Object { SubAssetsOperation <T> assetOperation = null; if (this.CheckAssetLoaded <SubAssetsOperation <T> >(assetBundleName, assetName, out assetOperation)) { return(assetOperation.GetAllAssets()); } else { return(null); } }
/// <summary> /// サブアセット読み込み /// </summary> /// <param name="assetBundleName">アセットバンドル名</param> /// <param name="assetName">読み込むアセット名</param> /// <param name="onLoad">読み込み完了時コールバック</param> public void LoadSubAssets <T>(string assetBundleName, string assetName, Action <T[]> onLoad = null) where T : UnityEngine.Object { if (!this.CheckAssetBundleExists(assetBundleName)) { onLoad.SafetyInvoke(null); return; } var data = this.resourceList[assetBundleName]; var assetOperation = data.FindAssetOperation <SubAssetsOperation <T> >(assetName); //初めての読み込み if (assetOperation == null) { //アセット管理データ作成 assetOperation = new SubAssetsOperation <T>(assetName, onLoad); data.AddAssetOperation(assetOperation); //読み込み開始 this.UpdateAssetBundleOperation(data); } //ロード済み else if (assetOperation.GetStatus() == AssetOperationBase.Status.isLoaded) { //1フレーム後にコールバック実行 StartCoroutine(CoroutineUtility.WaitForFrameAction(1, () => { onLoad.SafetyInvoke(assetOperation.GetAllAssets()); })); } //ロード中 else { //コールバック追加 assetOperation.AddCallBack(onLoad); } }