Unity3D读取assetbundle

方法一、GreatFromFile方法加载模型

 

优缺点:

建议使用AssetBundle.CreatFromFile 它是一个同步方法。现在IOS 和 android 都支持了。打包的时候需要选择不压缩

assetbundle打包方式:

 

 1 BuildPipeline.BuildAssetBundle(obj, null, targetPath, BuildAssetBundleOptions.UncompressedAssetBundle | BuildAssetBundleOptions.CollectDependencies 

 读取方式:

 1  /// <summary>
 2     /// CreatFromFile 方法加载模型
 3     /// </summary>
 4     /// <param name="f_strPath"></param>
 5     /// <returns></returns>
 6     public AssetBundle getCreatFromFile(string f_strPath)
 7     {
 8         try
 9         {
10         AssetBundle _AssetBundle =  AssetBundle.CreateFromFile(f_strPath);
11         return _AssetBundle;
12         }
13         catch (Exception e)
14         {
15             Debug.LogError("加载模型文件失败 AssetBundle " + f_strPath);
16         }
17         return null;
18     
19     } 

 

 

方法二、FromMemory方式加载模型

 1  /// <summary>
 2     /// FromMemory方式加载模型
 3     /// </summary>
 4     /// <param name="f_strPath"></param>
 5     /// <returns></returns>
 6     public AssetBundleCreateRequest getModelByResourcePath(string f_strPath)
 7     {
 8         AssetBundleCreateRequest _requestResult = null;
 9         try
10         {
11             byte[] _bs = File.ReadAllBytes(f_strPath);
12             Debug.Log(" AssetBundle " + f_strPath);
13             _requestResult = AssetBundle.CreateFromMemory(_bs);
14            
15         }
16         catch (Exception e)
17         {
18             Debug.LogError("加载模型文件失败 AssetBundle " + f_strPath);
19         }
20         return _requestResult;
21     }

 

方法三、WWW方式加载模型

WWW bundle = new WWW(path);

这样的做法是通过一个路径进行下载(无论是服务器路径还是本地路径下载操作都一样)但是bundle只能保存在内存中,也就是退出游戏在进入还得重新下,很显然在游戏中我们不能使用这种方式。

 1 {
 2          WWW bundle = WWW.LoadFromCacheOrDownload(path,5);
 3  
 4          yield return bundle;
 5  
 6          //加载到游戏中
 7          yield return Instantiate(bundle.assetBundle.mainAsset);
 8  
 9          bundle.assetBundle.Unload(false);
10     }
getModelByResourcePathByWWW方法加载模型

WWW.LoadFromCacheOrDownload 是异步方法,而且还占用内存。

 1  /// <summary>
 2     /// WWW加载模型
 3     /// </summary>
 4     /// <param name="f_strPath"></param>
 5     /// <returns></returns>
 6     public WWW getModelByResourcePathByWWW(string f_strPath)
 7     {
 8       //int _nCount=UnityEngine.Random.Range(1,10000);
 9         try
10         {
11 
12 
13             WWW _www = WWW.LoadFromCacheOrDownload("file://" + f_strPath, 1);
14             Debug.Log("www加载模型文件成功:FilePath" + f_strPath);
15             return _www;
16         }
17         catch (Exception e)
18         {
19             Debug.LogError("加载模型文件失败 AssetBundle " + f_strPath + " " + e.GetBaseException());
20         }
21         return null;
22     }

 

转载于:https://www.cnblogs.com/dawn-cn/p/4238092.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity3D是一个功能强大的游戏开发工具,在游戏中经常需要读取XML文件。XML是可扩展标记语言的缩写,它是一种用于描述数据的编程语言,广泛应用于Web应用程序、数据库等领域。Unity3D提供了多种读取XML文件的方法。 第一种方法是使用XmlDocument类。使用这个类可以读取和解析XML文件。首先需要创建一个XmlDocument对象,并将XML文件的路径作为参数传递给该对象。然后使用SelectSingleNode或SelectNodes方法来定位XML文件中包含的节点和属性,使用InnerXml属性或InnerText属性来获取节点或属性的值。 第二种方法是使用XmlSerializer类。这个类可以将XML文件中的数据转换为对象,通过对象来访问XML文件中的数据。首先需要将XML文件中的数据映射到一个类或结构体中,然后创建一个XmlSerializer对象,并使用Deserialize方法将XML文件中的数据反序列化成对象。 第三种方法是使用LINQ to XML技术。这种方法使用C#语言中的LINQ技术来读取和处理XML文件。使用这种方法可以使代码更简洁、可读性更好。使用LINQ to XML技术首先需要创建一个XDocument对象,并使用LINQ查询语言或函数的方式来查询和处理XML文件中的数据。 总结来说,Unity3D可以通过XmlDocument、XmlSerializer和LINQ to XML技术来读取XML文件。开发者可以根据实际需求选择不同的方法,来完成XML文件的读取和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值