public void GetPrefab(string abName, string assetName, System.Action <UnityEngine.Object> onLoad) { abName = GetFilePathByFileName(abName); if (IsUseAssetBundle) { //LoadAssetBundle(abName, assetName, loadPrefab); LoadAssetBundle(abName, assetName, onLoad); } else { if (abName.EndsWith(mAssetBundleSuffix)) { abName = abName.Remove(abName.Length - mAssetBundleSuffix.Length); } //去掉后缀名 abName = MyFileUtil.GetFileNameWithoutExtension(abName); string newAbName = DirNameForAssetBundlesBuildFrom + "/" + abName; UnityEngine.Object obj = GetResourcePrefab(newAbName); if (obj == null) { obj = GetResourcePrefab(abName); } onLoad(obj); obj = null; } }
public UnityEngine.Object GetPrefabSync(string abName, string assetName) { abName = GetFilePathByFileName(abName); if (IsUseAssetBundle) { //LoadAssetBundle(abName, assetName, loadPrefab); return(LoadAssetBundleSync(abName, assetName)); } else { if (abName.EndsWith(mAssetBundleSuffix)) { abName = abName.Remove(abName.Length - mAssetBundleSuffix.Length); } //去掉后缀名 abName = MyFileUtil.GetFileNameWithoutExtension(abName); string newAbName = DirNameForAssetBundlesBuildFrom + "/" + abName; UnityEngine.Object obj = GetResourcePrefab(newAbName); if (obj == null) { obj = GetResourcePrefab(abName); } return(obj); } }
public static bool IsReleaseAssetBundleImmediately = false; //是否立即释放AssetBundle public void UnloadAsset(string assetBundleName) { if (IsUseAssetBundle) { assetBundleName = GetFilePathByFileName(assetBundleName); UnloadAssetBundle(assetBundleName, true); } else { assetBundleName = GetFilePathByFileName(assetBundleName); if (assetBundleName.EndsWith(mAssetBundleSuffix)) { assetBundleName = assetBundleName.Remove(assetBundleName.Length - mAssetBundleSuffix.Length); } //去掉后缀名 assetBundleName = MyFileUtil.GetFileNameWithoutExtension(assetBundleName); string newAbName = DirNameForAssetBundlesBuildFrom + "/" + assetBundleName; if (mDictResources.ContainsKey(newAbName) == false) { if (mDictResources.ContainsKey(assetBundleName) == false) { ResourceUnit ru = mDictResources[assetBundleName]; mDictResources.Remove(assetBundleName); foreach (UnityEngine.Object obj in ru.instanceList) { UnityEngine.Object.Destroy(obj); } ru.prefab = null; ru = null; Resources.UnloadUnusedAssets(); } else { Debug.LogError("Not Found Resource When UnloadAsset : " + assetBundleName); } } else { ResourceUnit ru = mDictResources[newAbName]; mDictResources.Remove(newAbName); foreach (UnityEngine.Object obj in ru.instanceList) { UnityEngine.Object.Destroy(obj); } ru.prefab = null; ru = null; } } }
public void GetUIPrefab(string abName, string assetName, System.Action <UnityEngine.Object> onLoad) { string newPath = abName; if (newPath.StartsWith("UI") == false) { newPath = "UI/" + abName; } newPath = MyFileUtil.GetFileNameWithoutExtension(newPath); GameObject prefab = Resources.Load <GameObject>(newPath); if (prefab != null) { //常用且不轻易改动的UI onLoad(prefab); } else { GetPrefab(abName, assetName, onLoad); } }
//-----------------------------------------------------------------------------// public UnityEngine.Object GetUIPrefabSync(string abName, string assetName) { string newPath = abName; if (newPath.StartsWith("UI") == false) { newPath = "UI/" + abName; } newPath = MyFileUtil.GetFileNameWithoutExtension(newPath); GameObject prefab = Resources.Load <GameObject>(newPath); if (prefab != null) { //常用且不轻易改动的UI return(prefab); } else { return(GetPrefabSync(abName, assetName)); } }