Пример #1
0
        public void GetAsset <T>(string _name, Action <T[]> _callBack) where T : UnityEngine.Object
        {
            string assetName;

            if (getAssetPathDelegate != null)
            {
                string tmpName = getAssetPathDelegate(_name, typeof(T));

                if (!string.IsNullOrEmpty(tmpName))
                {
                    assetName = tmpName;
                }
                else
                {
                    assetName = _name;
                }
            }
            else
            {
                assetName = _name;
            }

#if USE_ASSETBUNDLE
            IAssetManagerUnit unit;

            if (!dic.TryGetValue(assetName, out unit))
            {
                unit = new AssetManagerUnit2 <T>(assetName);

                dic.Add(assetName, unit);
            }

            (unit as AssetManagerUnit2 <T>).Load(_callBack);
#else
            UnityEngine.Object[] datas = AssetDatabase.LoadAllAssetsAtPath(assetName);

            List <T> tmpList = new List <T>();

            for (int i = 0; i < datas.Length; i++)
            {
                UnityEngine.Object data = datas[i];

                if (data is T)
                {
                    tmpList.Add(data as T);
                }
            }

            T[] result = tmpList.ToArray();

            _callBack(result);
#endif
        }
Пример #2
0
        public T[] GetAsset <T> (string _name, Action <T[], string> _callBack) where T : UnityEngine.Object
        {
#if USE_ASSETBUNDLE
            AssetManagerUnit2 <T> unit;

            if (!dic.ContainsKey(_name))
            {
                unit = new AssetManagerUnit2 <T> (_name);

                dic.Add(_name, unit);
            }
            else
            {
                unit = dic [_name] as AssetManagerUnit2 <T>;
            }

            unit.Load(_callBack);

            return(null);
#else
            string msg;

            UnityEngine.Object[] datas = AssetDatabase.LoadAllAssetsAtPath(_name);

            if (datas == null)
            {
                msg = "Resource load fail:" + _name;
            }
            else
            {
                msg = string.Empty;
            }

            List <T> tmpList = new List <T>();

            for (int i = 0; i < datas.Length; i++)
            {
                UnityEngine.Object data = datas[i];

                if (data is T)
                {
                    tmpList.Add(data as T);
                }
            }

            T[] result = tmpList.ToArray();

            _callBack(result, msg);

            return(result);
#endif
        }