AssetBundle.CreateFromFile的有趣事情

有趣的事情发生了:

[@MenuItem("AssetBundles/Build AssetBundles")]

staticvoid BuildABs ()

{

AssetBundleBuild[] buildMap = new AssetBundleBuild[1];

buildMap [0].assetBundleName ="test.assetbundle";//打包的资源包名称

string[] resourcesAssets =new string[7];//此资源包下面有多少文件

resourcesAssets [0] ="Assets/BuildABRes/test1.csv";

resourcesAssets [1] ="Assets/BuildABRes/test1.txt";

resourcesAssets [2] ="Assets/BuildABRes/test2.txt";

resourcesAssets [3] ="Assets/BuildABRes/test3.txt";

resourcesAssets [4] ="Assets/BuildABRes/test4.txt";

resourcesAssets [5] ="Assets/BuildABRes/test4/test4.txt";

resourcesAssets [6] ="Assets/BuildABRes/test1.xml";

buildMap [0].assetNames = resourcesAssets;

BuildPipeline.BuildAssetBundles (Application.persistentDataPath +"/ABs", buildMap, BuildAssetBundleOptions.UncompressedAssetBundle, EditorUserBuildSettings.activeBuildTarget);

}

对以上文件进行打包后,打出的ab解出时会先对resourcesAssets进行排序,

string path =Application.persistentDataPath + "/ABs/test.assetbundle";

//不能使用file://

Debug.Log (path);

AssetBundle ab =AssetBundle.CreateFromFile (path);

foreach (var ain ab.GetAllAssetNames()) {

Debug.Log (a);

}

TextAsset txt = ab.LoadAsset<TextAsset> ("test1.xml");

Debug.Log (txt.text);


LoadAsset(name) name可以使用三种方式, 1,fullname; 2, 带后缀的简称; 3,不带后缀的简称

那么上面的方法可以使用

1、ab.LoadAsset<TextAsset> (“Assets/BuildABRes/test1.xml”); =>输出test1.xml的值

2、ab.LoadAsset<TextAsset> (“test1.xml");    =>输出test1.xml的值

3、ab.LoadAsset<TextAsset> (“test1”);                     =>输出test1.csv文件的值


3之所以输出test.csv的值 是排序后的结果。以最先匹配到的文件为准

unity 编报认三种通用文本文件格式:txt,xml,csv
另外还认一种二进制文件格式:.bytes
[lua,使用这种方式 + + 加密]
除此之外的文本文件无法被unity打包。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值