예제 #1
0
        /// <summary>
        /// 指定AssetBundleの読み込み.
        /// </summary>
        /// <param name="path">読み込むデータのPath</param>
        /// <param name="fileName">読み込むファイル名</param>
        /// <param name="priority">常駐優先度0~99</param>
        /// <param name="loadEndEvent">読み込み終了イベント登録.</param>
        public void LoadAssetBundleData(string path, string fileName, int priority = 0, CallbackLoadEndEvent loadEndEvent = null)
        {
#if UNITY_EDITOR && UNUSE_ASSETBUNDLE
            // アセットバンドル使わない.
#else
            // 以前に読み込みしているか?
            var abData = abDataList.Find(a => fileName.Equals(a.fileName));
            if (abData != null)
            {
                if (loadEndEvent != null)
                {
                    // ロード状態によって処理分け.
                    switch (abData.state)
                    {
                    case LoadState.END:
                    case LoadState.ERROR:
                        loadEndEvent();
                        break;

                    default:
                        abData.loadEndEvent += loadEndEvent;
                        break;
                    }
                }
            }
            else
            {
                AssetBundleData tmp = new AssetBundleData();
                tmp.path         = path;
                tmp.fileName     = fileName;
                tmp.state        = LoadState.START;
                tmp.data         = null;
                tmp.priority     = priority;
                tmp.loadEndEvent = loadEndEvent;
                tmp.coroutine    = LoadAssetBundle(tmp, path, fileName);
                abDataList.Add(tmp);
                StartCoroutine(tmp.coroutine);
            }
#endif
        }
예제 #2
0
        /// <summary>
        /// 指定データの読み込み.
        /// Resources,AssetBundle両方読み込めます
        /// </summary>
        /// <param name="path">読み込むデータのPath(Resources用)</param>
        /// <param name="fileName">読み込むファイル名</param>
        /// <param name="assetBundleName">AssetBundleから読み込む場合は、AssetBundle名</param>
        /// <param name="type">オブジェクトタイプ</param>
        /// <param name="priority">常駐優先度0~99</param>
        /// <param name="loadEndEvent">読み込み終了イベント登録</param>
        public void LoadData(string path, string fileName, string assetBundleName = null, System.Type type = null, int priority = 0, CallbackLoadEndEvent loadEndEvent = null)
        {
            // 以前に読み込んでいるか?.
            var cacheObj = objDataList.Find(a => fileName.Equals(a.fileName));

            if (cacheObj != null)
            {
                if (loadEndEvent != null)
                {
                    // ロード状態によって処理分け.
                    switch (cacheObj.state)
                    {
                    case LoadState.END:
                    case LoadState.ERROR:
                        loadEndEvent();
                        break;

                    default:
                        cacheObj.loadEndEvent += loadEndEvent;
                        break;
                    }
                }
            }
            else
            {
                ObjectData tmp = new ObjectData();
                tmp.path         = path;
                tmp.fileName     = fileName;
                tmp.state        = LoadState.START;
                tmp.data         = null;
                tmp.priority     = priority;
                tmp.loadEndEvent = loadEndEvent;
                tmp.coroutine    = LoadAsync(tmp, assetBundleName);
                objDataList.Add(tmp);
                StartCoroutine(tmp.coroutine);
            }
        }