/// <summary> /// シーンアセットバンドルの読み込み /// </summary> /// <param name="assetBundleName">アセットバンドル名</param> /// <param name="onLoad">読み込み完了時コールバック</param> public void LoadScenePaths(string assetBundleName, Action <string[]> onLoad = null) { if (!this.CheckAssetBundleExists(assetBundleName)) { onLoad.SafetyInvoke(null); return; } AssetBundleOperation data = this.resourceList[assetBundleName]; var assetOperation = data.FindAssetOperation <SceneAssetOperation>(); //初めての読み込み if (assetOperation == null) { //アセット管理データさくせい assetOperation = new SceneAssetOperation(onLoad); data.AddAssetOperation(assetOperation); //読み込み開始 this.UpdateAssetBundleOperation(data); } //ロード済み else if (assetOperation.GetStatus() == AssetOperationBase.Status.isLoaded) { //1フレーム後にコールバック実行 StartCoroutine(CoroutineUtility.WaitForFrameAction(1, () => { onLoad.SafetyInvoke(assetOperation.GetAllScenePaths()); })); } //ロード中 else { //コールバック追加 assetOperation.AddCallBack(onLoad); } }
/// <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); } }