コード例 #1
0
        /// <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);
            }
        }
コード例 #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);
            }
        }