/// <summary> /// 同步资源加载,外部直接调用,仅加载不需要实例化的资源,例如Texture,音频等等 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="path"></param> /// <returns></returns> public T LoadResource <T>(string path) where T : UnityEngine.Object { if (string.IsNullOrEmpty(path)) { return(null); } uint crc = CRC32.GetCrc32(path); ResouceItem item = GetCacheResouceItem(crc); if (item != null) { return(item.m_Obj as T); } T obj = null; #if UNITY_EDITOR if (!m_LoadFormAssetBundle) { item = AssetBundleManager.Instance.FindResourceItme(crc); if (item != null && item.m_AssetBundle != null) { if (item.m_Obj != null) { obj = (T)item.m_Obj; } else { obj = item.m_AssetBundle.LoadAsset <T>(item.m_AssetName); } } else { if (item == null) { item = new ResouceItem(); item.m_Crc = crc; } obj = LoadAssetByEditor <T>(path); } } #endif if (obj == null) { item = AssetBundleManager.Instance.LoadResouceAssetBundle(crc); if (item != null && item.m_AssetBundle != null) { if (item.m_Obj != null) { obj = item.m_Obj as T; } else { obj = item.m_AssetBundle.LoadAsset <T>(item.m_AssetName); } } } CacheResource(path, ref item, crc, obj); return(obj); }
/// <summary> /// 同步加载资源,针对给ObjectManager的接口 /// </summary> /// <param name="path"></param> /// <param name="resObj"></param> /// <returns></returns> public ResouceObj LoadResource(string path, ResouceObj resObj) { if (resObj == null) { return(null); } uint crc = resObj.m_Crc == 0 ? CRC32.GetCrc32(path) : resObj.m_Crc; ResouceItem item = GetCacheResouceItem(crc); if (item != null) { resObj.m_ResItem = item; return(resObj); } Object obj = null; #if UNITY_EDITOR if (!m_LoadFormAssetBundle) { item = AssetBundleManager.Instance.FindResourceItme(crc); if (item != null && item.m_Obj != null) { obj = item.m_Obj as Object; } else { if (item == null) { item = new ResouceItem(); item.m_Crc = crc; } obj = LoadAssetByEditor <Object>(path); } } #endif if (obj == null) { item = AssetBundleManager.Instance.LoadResouceAssetBundle(crc); if (item != null && item.m_AssetBundle != null) { if (item.m_Obj != null) { obj = item.m_Obj as Object; } else { obj = item.m_AssetBundle.LoadAsset <Object>(item.m_AssetName); } } } CacheResource(path, ref item, crc, obj); resObj.m_ResItem = item; item.m_Clear = resObj.m_bClear; return(resObj); }