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)); }
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)); }
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); } }
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)); }