Unity资源加载方式

    技术2024-03-23  101

    Unity资源加载方式

    1.直接拖拽到组件上 将资源直接拖拽到组件上,再从组件上获取资源 这种方式是最简单的,但是很容易丢失数据,所以基本不用

    public GameObject m_Prefab; void Start () { GameObject obj = GameObject.Instantiate(m_Prefab); }

    2.使用Resources.Load() 使用该方法需要创建一个名为Resources的文件夹,将资源放在该文件夹下 由于Resources文件夹的大小是有限制的,所以这种方法也不是很常用

    void Start () { GameObject obj = GameObject.Instantiate(Resources.Load("文件名") as GameObject); }

    3.使用AssetBundle 使用该方法需要先设置资源的包名,再将资源打包 使用AssetBundle的方式加载的速度远远快于Resources.Load,占用的内存也是偏低的,目前一般都使用这种方式进行加载

    先写一个简单的UnityEditor用来打包

    public class BundleEditor { [MenuItem("Tool/打包")] public static void Build() { BuildPipeline.BuildAssetBundles(Application.streamingAssetsPath, BuildAssetBundleOptions.ChunkBasedCompression,EditorUserBuildSettings.activeBuildTarget); AssetDatabase.Refresh(); } }

    打完包后可以从包里获取资源

    void Start () { AssetBundle assetBundle = AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/包名"); GameObject obj = GameObject.Instantiate(assetBundle.LoadAsset<GameObject>("文件名")); }

    4.使用AssetDataBase.LoadAtPath() 这种方式不会在游戏运行时使用,它是一个UnityEditor的API

    void Start () { GameObject obj = GameObject.Instantiate(UnityEditor.AssetDatabase.LoadAssetAtPath<GameObject>("文件路径")); }
    Processed: 0.009, SQL: 9