コード例 #1
0
        protected T _LoadResFromResourcesFolder <T>(ResourceInfoTable resInfoItem, AssetType eAssetType, int iHashCode) where T : UnityEngine.Object
        {
            if (eAssetType == AssetType.AT_PREFAB)
            {
                var assetInst = Resources.Load <T>(resInfoItem.Path[0]);
                if (null == assetInst)
                {
                    LoggerManager.Instance().LogErrorFormat("LoadGameObject with path = {0} failed ...", resInfoItem.PathHashKey);
                    return(null);
                }

                _AddOrUpdateAlivedObject(resInfoItem, iHashCode, assetInst);

                return(UnityEngine.Object.Instantiate(assetInst) as T);
            }
            else if (eAssetType == AssetType.AT_SPRITE)
            {
                Sprite   assetInst   = null;
                Sprite[] spriteArray = Resources.LoadAll <Sprite>(resInfoItem.Path[0]);
                for (int i = 0; i < spriteArray.Length; ++i)
                {
                    if (spriteArray[i].name == resInfoItem.Path[1])
                    {
                        assetInst = spriteArray[i];
                        break;
                    }
                }

                if (null == assetInst)
                {
                    LoggerManager.Instance().LogErrorFormat("Load Sprite with path = {0} failed ...", resInfoItem.PathHashKey);
                    return(default(T));
                }

                _AddOrUpdateAlivedObject(resInfoItem, iHashCode, assetInst);

                return(assetInst as T);
            }
            else if (eAssetType == AssetType.AT_ASSETS)
            {
                T assetInst = Resources.Load <T>(resInfoItem.Path[0]);
                if (null == assetInst)
                {
                    LoggerManager.Instance().LogErrorFormat("Load Asset from path = {0} with type = {1} failed ...", resInfoItem.PathHashKey, typeof(T).Name);
                    return(null);
                }

                _AddOrUpdateAlivedObject(resInfoItem, iHashCode, assetInst);

                return(assetInst);
            }

            LoggerManager.Instance().LogErrorFormat("LoadResFromResourcesFolder failed ... path = {0} type = {1}", resInfoItem.PathHashKey, typeof(T).Name);

            return(default(T));
        }
コード例 #2
0
        protected T _LoadResFromStreamingAssetsBundle <T>(ResourceInfoTable resInfoItem, AssetType eAssetType, int iHashCode) where T : UnityEngine.Object
        {
            if (resInfoItem.Path.Count > 1)
            {
                AssetBundle assetBundle = AssetBundleManager.Instance().getAssetBundle(resInfoItem.Path[0]);

                if (null == assetBundle)
                {
                    LoggerManager.Instance().LogProcessFormat("get assetbundle failed name = {0} ...", resInfoItem.Path[0]);
                    return(default(T));
                }

                return(_LoadResFromAssetBundle <T>(resInfoItem, assetBundle, iHashCode));
            }

            LoggerManager.Instance().LogErrorFormat("_LoadResFromStreamingAssetsBundle failed ... path = {0} type = {1} argc = {2} error", resInfoItem.PathHashKey, typeof(T).Name, resInfoItem.Path.Count);
            return(default(T));
        }
コード例 #3
0
        protected void _AddOrUpdateAlivedObject(ResourceInfoTable resInfoItem, int iHashCode, UnityEngine.Object objRef)
        {
            AssetType eAssetType = (AssetType)resInfoItem.TypeId;

            if (null == resInfoItem)
            {
                LoggerManager.Instance().LogErrorFormat("AddOrUpdateAlivedObject resInfoItem is null ...");
                return;
            }

            if (null == objRef)
            {
                LoggerManager.Instance().LogErrorFormat("AddOrUpdateAlivedObject objRef is null ... resId = {0}", resInfoItem.ID);
                return;
            }

            AssetInstance assetInstance = null;

            if (mAlivedObjects.ContainsKey(iHashCode))
            {
                assetInstance = mAlivedObjects[iHashCode];
                assetInstance.objectRef.Target = objRef;
                assetInstance.resInfo          = resInfoItem;
                assetInstance.eAssetType       = eAssetType;
            }
            else
            {
                assetInstance = new AssetInstance
                {
                    iHashCode  = iHashCode,
                    resInfo    = resInfoItem,
                    objectRef  = new WeakReference(objRef),
                    eAssetType = eAssetType,
                };
                mAlivedObjects.Add(iHashCode, assetInstance);
            }
        }
コード例 #4
0
        protected T _LoadResFromAssetBundle <T>(ResourceInfoTable resInfoItem, AssetBundle assetBundle, int iHashCode) where T : UnityEngine.Object
        {
            AssetType eAssetType = (AssetType)resInfoItem.TypeId;

            if (eAssetType == AssetType.AT_PREFAB)
            {
                if (resInfoItem.Path.Count != 2)
                {
                    LoggerManager.Instance().LogErrorFormat("Load Prefab From AssetBundle Failed ... need 2 argvs ... now is {0}", resInfoItem.Path.Count);
                    return(default(T));
                }

                var assetInst = assetBundle.LoadAsset <T>(resInfoItem.Path[1]);
                if (null == assetInst)
                {
                    LoggerManager.Instance().LogErrorFormat("Load Prefab From AssetBundle Failed ... ResId = {0} PathHashKey = {1} ...", resInfoItem.ID, resInfoItem.PathHashKey);
                    return(default(T));
                }

                _AddOrUpdateAlivedObject(resInfoItem, iHashCode, assetInst);

                return(UnityEngine.Object.Instantiate(assetInst) as T);
            }
            else if (eAssetType == AssetType.AT_SPRITE)
            {
                Sprite assetInst = null;

                if (resInfoItem.Path.Count != 3)
                {
                    LoggerManager.Instance().LogErrorFormat("Load Sprite From AssetBundle Failed ... need 3 argvs ...now is {0}", resInfoItem.Path.Count);
                    return(default(T));
                }

                var sprites = assetBundle.LoadAssetWithSubAssets(resInfoItem.Path[1], typeof(Sprite));
                if (null != sprites)
                {
                    for (int i = 0; i < sprites.Length; ++i)
                    {
                        if (sprites[i].name == resInfoItem.Path[2])
                        {
                            assetInst = sprites[i] as Sprite;
                            break;
                        }
                    }
                }

                if (null == assetInst)
                {
                    LoggerManager.Instance().LogErrorFormat("Load Sprite From AssetBundle Failed ... ResId = {0} PathHashKey = {1} ...", resInfoItem.ID, resInfoItem.PathHashKey);
                    return(default(T));
                }

                _AddOrUpdateAlivedObject(resInfoItem, iHashCode, assetInst);

                return(assetInst as T);
            }
            else if (eAssetType == AssetType.AT_ASSETS)
            {
                var assetInst = assetBundle.LoadAsset <T>(resInfoItem.Path[1]);
                if (null == assetInst)
                {
                    LoggerManager.Instance().LogErrorFormat("Load Asset From AssetBundle Failed ... ResId = {0} PathHashKey = {1} ... type={2}", resInfoItem.ID, resInfoItem.PathHashKey, typeof(T).Name);
                    return(default(T));
                }

                _AddOrUpdateAlivedObject(resInfoItem, iHashCode, assetInst);

                return(assetInst as T);
            }

            return(default(T));
        }