Beispiel #1
0
        /// <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);
            }
        }
Beispiel #2
0
        /// <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);
            }
        }