unity开发之九:关于unity3d5.6.2版本 assetsBundle打包与加载,以及图片的队列加载
2017-12-18 12:45
661 查看
我们开发unity3d的项目的过程中免不了使用模型,而这些素材我们需要放在服务器上面,是不可能放在本地的,然而我们需要从服务器加载这些资源,unity3d给我们提供了一种打包形式就assetsBundle!
ps:可能会出现bug的地方,我的项目一开始出现素材再电脑正常显示,在手机上全都是问号,后来测试发现,服务器地址在电脑上不用加http://就可以拿到图片,但是手机上必须拿,然后就是发现模型在电脑可以加载,在手机上不能,测试发现素材不能共用,assetsBundle必须分开打包加载!
首先我们讲打包:
第一步我们拿到我们的模型资源,当然也可以是各种资源,制作成预制体,如图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/06/effed88fce7b6f5ac8c7db88acf79da8)
图中红色框框选的一个是预制体,下面的是ass包名和后缀名
第二步我们写打包代码,需要继承unityEditor,代码如下:
我们需要把代码放在
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/06/cea2d5517b861afd9c2f23d1d28c02af)
Editor文件夹下!
第三步我们由于 [MenuItem(“AssetBundle/Build (Collection)”)]菜单添加,我们可以在unity3d菜单栏上面看到新的选项,如图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/06/3b5d9feb0f758223114955c471d708c9)
最后我们选中资源点击Build方式就行了,可以得到类似如下资源:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/06/6e7153acfca2408350a850de4227c56b)
资源打包说完了!
资源加载:
第一步我们把打好的ass给后端人员,他们存好之后会给你一个接口,也就是服务器地址,我们可以通过WWW类来下载该资源,我们打包的时候是啥样的加载出来的资源也就是啥样的!代码如下:
我们请求到模型之后需要实例化出来,并且可以控制位置和缩放等等。。
加载图片资源:
想要图片一张一张加载,我们可以给WWW类的请求方式中传入图片组件,代码如下:
实例化子项的时候:
这样就能形成先实例化子项,图片后续加载出来!
ps:可能会出现bug的地方,我的项目一开始出现素材再电脑正常显示,在手机上全都是问号,后来测试发现,服务器地址在电脑上不用加http://就可以拿到图片,但是手机上必须拿,然后就是发现模型在电脑可以加载,在手机上不能,测试发现素材不能共用,assetsBundle必须分开打包加载!
首先我们讲打包:
第一步我们拿到我们的模型资源,当然也可以是各种资源,制作成预制体,如图:
图中红色框框选的一个是预制体,下面的是ass包名和后缀名
第二步我们写打包代码,需要继承unityEditor,代码如下:
using UnityEditor; using UnityEngine; public class BuildAssetBundle { /// <summary> /// 点击后,所有设置了AssetBundle名称的资源会被 分单个打包出来 /// </summary> [MenuItem("AssetBundle/Build (Single)")] static void Build_AssetBundle() { BuildPipeline.BuildAssetBundles(Application.dataPath + "/AssetBundle", BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows); //刷新 AssetDatabase.Refresh(); } /// <summary> /// 选择的资源合在一起被打包出来 /// </summary> [MenuItem("AssetBundle/Build (Collection)")] static void Build_AssetBundle_Collection() { AssetBundleBuild[] buildMap = new AssetBundleBuild[1]; //打包出来的资源包名字 buildMap[0].assetBundleName = "enemybundle"; //在Project视图中,选择要打包的对象 Object[] selects = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets); string[] enemyAsset = new string[selects.Length]; for (int i = 0; i < selects.Length; i++) { //获得选择 对象的路径 enemyAsset[i] = AssetDatabase.GetAssetPath(selects[i]); } buildMap[0].assetNames = enemyAsset; BuildPipeline.BuildAssetBundles(Application.dataPath + "/Test_AssetBundle", buildMap, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows); //刷新 AssetDatabase.Refresh(); } }
我们需要把代码放在
Editor文件夹下!
第三步我们由于 [MenuItem(“AssetBundle/Build (Collection)”)]菜单添加,我们可以在unity3d菜单栏上面看到新的选项,如图:
最后我们选中资源点击Build方式就行了,可以得到类似如下资源:
资源打包说完了!
资源加载:
第一步我们把打好的ass给后端人员,他们存好之后会给你一个接口,也就是服务器地址,我们可以通过WWW类来下载该资源,我们打包的时候是啥样的加载出来的资源也就是啥样的!代码如下:
/// <summary> /// 请求模型 /// </summary> IEnumerator GetModels(string path) { WWW getdata = new WWW(path); yield return getdata; UnityEngine.Object[] models = getdata.assetBundle.LoadAllAssets(); GameObject model = Instantiate((GameObject)models[0]); model.transform.localPosition = new Vector3(0, 0, 0); model.transform.localScale = new Vector3(5, 5, 5); model.GetComponent<Animation>().Stop(); model.transform.SetParent(_modelParent.transform); }
我们请求到模型之后需要实例化出来,并且可以控制位置和缩放等等。。
加载图片资源:
想要图片一张一张加载,我们可以给WWW类的请求方式中传入图片组件,代码如下:
/// <summary> /// 获取定制图片 /// </summary> /// <param name="_url"></param> /// <param name="_wForm"></param> /// <returns></returns> IEnumerator GetPhoto(string _url, RawImage img) { WWW postData = new WWW(_url); yield return postData; img.texture = postData.texture; }
实例化子项的时候:
GameObject item = Instantiate(_item); item.name = _customAllInfoData.port[i].id; StartCoroutine(GetPhoto(_customAllInfoData.port[i].texture, item.GetComponent<CustomItemScript>()._price));
这样就能形成先实例化子项,图片后续加载出来!
相关文章推荐
- unity 关于assetbundle 打包和加载的方法
- Unity(五) Unity3D使用Assetbundle打包加载(Prefab、场景)转载原博客
- Unity教程之-Unity3d打包Assetbundle并加载(全面)
- unity5.4版本打包AssetBundle与加载(避免材质丢失网格丢失)
- [unity3d]unity打包web版后自定义加载图片
- [unity3d]unity打包web版后自定义加载图片
- Unity 关于AssetBundle(资源束)打包和加载(一)
- unity AssetBundle打包以及加载
- 一、创建Assetbundle 在unity3d开发的游戏中,无论模型,音频,还是图片等,我们都做成Prefab,然后打包成Assetbundle,方便我们后面的使用,来达到资源的更新。
- 【Unity开发】Unity5.x版本的AssetBundle打包
- Unity5 AssetBundle 打包以及加载
- Unity5 AssetBundle 打包以及加载
- [unity基础教程]关于Unity3D中Resources动态加载NGUI图片的方法!
- [Unity3d]打包Assetbundle并加载
- 关于Unity3D中Resources动态加载NGUI图片的方法!!!
- [unity3d]unity中打包成.unity3d格式并实现本地加载出来
- 关于ListView异步加载图片导致图片显示混乱以及ListView ...
- [Unity3d]打包Assetbundle并加载
- 关于Unity3D中Resources动态加载NGUI图片的方法!!!
- [Unity3d]打包Assetbundle并加载