예제 #1
0
    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;
        }
    }
예제 #2
0
    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);
        }
    }
예제 #3
0
    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;
            }
        }
    }
예제 #4
0
    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);
        }
    }
예제 #5
0
    //-----------------------------------------------------------------------------//

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