Unity API HOOK 之AssetBundle

作者: 2b75747cf703 | 来源:发表于2016-09-08 11:43 被阅读645次

    Unity API HOOK 之Resources http://www.jianshu.com/p/c7d0330683e5

    #if ASSETBUNDLEHOOK
    
    using UnityEngine;
    using System;
    using Object = UnityEngine.Object;
    
    public class AssetBundle
    {
        private UnityEngine.AssetBundle assetBundle;
    
        public AssetBundle()
        {
            assetBundle = new UnityEngine.AssetBundle();
        }
    
        public AssetBundle(UnityEngine.AssetBundle assetBundle)
        {
            this.assetBundle = assetBundle;
        }
    
        public static implicit operator AssetBundle(UnityEngine.AssetBundle assetBundle)
        {
            return new AssetBundle(assetBundle);
        }
    
        public static implicit operator bool (AssetBundle exists)
        {
            return exists != null;
        }
    
        public bool isStreamedSceneAssetBundle
        {
            get
            {
                return assetBundle.isStreamedSceneAssetBundle;
            }
        }
    
        public Object mainAsset
        {
            get
            {
                return assetBundle.mainAsset;
            }
        }
    
        public static UnityEngine.AssetBundle LoadFromFile(string path)
        {
            return UnityEngine.AssetBundle.LoadFromFile(path);
        }
    
        public static UnityEngine.AssetBundle LoadFromFile(string path, uint crc)
        {
            return UnityEngine.AssetBundle.LoadFromFile(path, crc);
        }
    
        public static UnityEngine.AssetBundle LoadFromFile(string path, uint crc, ulong offset)
        {
            return UnityEngine.AssetBundle.LoadFromFile(path, crc, offset);
        }
    
        public static AssetBundleCreateRequest LoadFromFileAsync(string path)
        {
            return UnityEngine.AssetBundle.LoadFromFileAsync(path);
        }
    
        public static AssetBundleCreateRequest LoadFromFileAsync(string path, uint crc)
        {
            return UnityEngine.AssetBundle.LoadFromFileAsync(path, crc);
        }
    
        public static AssetBundleCreateRequest LoadFromFileAsync(string path, uint crc, ulong offset)
        {
            return UnityEngine.AssetBundle.LoadFromFileAsync(path, crc, offset);
        }
    
        public static UnityEngine.AssetBundle LoadFromMemory(byte[] binary)
        {
            return UnityEngine.AssetBundle.LoadFromMemory(binary);
        }
    
        public static UnityEngine.AssetBundle LoadFromMemory(byte[] binary, uint crc)
        {
            return UnityEngine.AssetBundle.LoadFromMemory(binary, crc);
        }
    
        public static AssetBundleCreateRequest LoadFromMemoryAsync(byte[] binary)
        {
            return UnityEngine.AssetBundle.LoadFromMemoryAsync(binary);
        }
    
        public static AssetBundleCreateRequest LoadFromMemoryAsync(byte[] binary, uint crc)
        {
            return UnityEngine.AssetBundle.LoadFromMemoryAsync(binary, crc);
        }
    
        public string[] AllAssetNames()
        {
            return assetBundle.AllAssetNames();
        }
    
        public bool Contains(string name)
        {
            return assetBundle.Contains(name);
        }
    
        public string[] GetAllAssetNames()
        {
            return assetBundle.GetAllAssetNames();
        }
    
        public string[] GetAllScenePaths()
        {
            return assetBundle.GetAllScenePaths();
        }
    
        public Object[] LoadAllAssets()
        {
            return assetBundle.LoadAllAssets();
        }
    
        public Object[] LoadAllAssets(Type type)
        {
            return assetBundle.LoadAllAssets(type);
        }
    
        public T[] LoadAllAssets<T>() where T : Object
        {
            return assetBundle.LoadAllAssets<T>();
        }
    
        public AssetBundleRequest LoadAllAssetsAsync()
        {
            return assetBundle.LoadAllAssetsAsync();
        }
    
        public AssetBundleRequest LoadAllAssetsAsync(Type type)
        {
            return assetBundle.LoadAllAssetsAsync(type);
        }
    
        public AssetBundleRequest LoadAllAssetsAsync<T>()
        {
            return assetBundle.LoadAllAssetsAsync<T>();
        }
    
        public Object LoadAsset(string name)
        {
            return assetBundle.LoadAsset(name);
        }
    
        public Object LoadAsset(string name, Type type)
        {
            if (type == typeof(AudioClip))
            {
                var id = AudioMapping.GetId(name);
                if (id != "")
                {
                    name = "Audios/en/" + id;
    
                    return UnityEngine.Resources.Load(name, type);
                }
            }
    
            return assetBundle.LoadAsset(name, type);
        }
    
        public T LoadAsset<T>(string name) where T : Object
        {
            return LoadAsset(name, typeof(T)) as T;
        }
    
        public AssetBundleRequest LoadAssetAsync(string name)
        {
            return assetBundle.LoadAssetAsync(name);
        }
    
        public AssetBundleRequest LoadAssetAsync(string name, Type type)
        {
            return assetBundle.LoadAssetAsync(name, type);
        }
    
        public AssetBundleRequest LoadAssetAsync<T>(string name)
        {
            return assetBundle.LoadAssetAsync<T>(name);
        }
    
        public Object[] LoadAssetWithSubAssets(string name)
        {
            return assetBundle.LoadAssetWithSubAssets(name);
        }
    
        public Object[] LoadAssetWithSubAssets(string name, Type type)
        {
            return assetBundle.LoadAssetWithSubAssets(name, type);
        }
    
        public T[] LoadAssetWithSubAssets<T>(string name) where T : Object
        {
            return assetBundle.LoadAssetWithSubAssets<T>(name);
        }
    
        public AssetBundleRequest LoadAssetWithSubAssetsAsync(string name)
        {
            return assetBundle.LoadAssetWithSubAssetsAsync(name);
        }
    
        public AssetBundleRequest LoadAssetWithSubAssetsAsync(string name, Type type)
        {
            return assetBundle.LoadAssetWithSubAssetsAsync(name, type);
        }
    
        public AssetBundleRequest LoadAssetWithSubAssetsAsync<T>(string name)
        {
            return assetBundle.LoadAssetWithSubAssetsAsync<T>(name);
        }
    
        public void Unload(bool unloadAllLoadedObjects)
        {
            assetBundle.Unload(unloadAllLoadedObjects);
        }
    }
    
    #endif
    

    相关文章

      网友评论

        本文标题:Unity API HOOK 之AssetBundle

        本文链接:https://www.haomeiwen.com/subject/rkusettx.html