【Unity3D】 资源加载方式

1、Resources.Load

对应的目录:Assets/Resources

2、WWW加载AssetBundle

对应的包内目录:Application.dataPath + /StreamingAssets/{Win32}

对应的本地缓存目录:Application.persistentDataPath + /StreamingAssets/{Win32}

远程资源目录:ResourcesServerSite+ /StreamingAssets/{Win32}


1.Resources文件夹 
Resources文件夹是一个只读的文件夹,通过Resources.Load()来读取对象。因为这个文件夹下的所有资源都可以运行时来加载,所以Resources文件夹下的所有东西都会被无条件的打到发布包中。建议这个文件夹下只放Prefab或者一些Object对象,因为Prefab会自动过滤掉对象上不需要的资源。举个例子我把模型文件还有贴图文件都放在了Resources文件夹下,但是我有两张贴图是没有在模型上用的,那么此时这两张没用的贴图也会被打包到发布包中。假如这里我用Prefab,那么Prefab会自动过滤到这两张不被用的贴图,这样发布包就会小一些了。 

using UnityEngine;
public class Test : MonoBehaviour {
    private GameObject testObj;
	void Start () {
        //文件路径:Assets/Resources/Test/Prefab/TestPrefab.prefab
        testObj = Instantiate(Resources.Load("Test/Prefab/TestPrefab")) as GameObject;
	}
}

2.StreamingAssets
StreamingAssets文件夹也是一个只读的文件夹,但是它和Resources有点区别,Resources文件夹下的资源会进行一次压缩,而且也会加密,不使用点特殊办法是拿不到原始资源的。但是StreamingAssets文件夹就不一样了,它下面的所有资源不会被加密,然后是原封不动的打包到发布包中,这样很容易就拿到里面的文件。所以StreamingAssets适合放一些二进制文件,而Resources更适合放一些GameObject和Object文件。 StreamingAssets 只能用过www类来读取!!

using System.Collections;
using UnityEngine;
public class Test : MonoBehaviour
{
    //不同平台下StreamingAssets的路径是不同的,这里需要注意一下。
    public static readonly string PathURL =
#if UNITY_ANDROID   //安卓
        "jar:file://" + Application.dataPath + "!/assets/";
#elif UNITY_IPHONE  //iPhone
        Application.dataPath + "/Raw/";
#elif UNITY_STANDALONE_WIN || UNITY_EDITOR  //windows平台和web平台
 "file:///" + Application.dataPath + "/StreamingAssets/";
#else
        string.Empty;
#endif

    private GameObject testObj;

    void Start()
    {
        //文件路径:Assets/StreamingAssets/Test/test.assetbundle
        StartCoroutine(LoadPrefab(PathURL + "Test/test.assetbundle"));
    }

    private IEnumerator LoadPrefab(string path)
    {
        WWW bundle = WWW.LoadFromCacheOrDownload(path, 5);
        yield return bundle;
        //TestPrefab.prefab打包到test.assetbundle中
        testObj = Instantiate(bundle.assetBundle.LoadAsset("TestPrefab")) as GameObject;
        yield return testObj;
        bundle.assetBundle.Unload(false);
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值