Unity导出android关于路径问题总结

本文总结了Unity导出Android应用时遇到的路径问题及解决方案,包括移动文件失败的错误处理、Android平台下AssetBundle的打包与加载路径。针对Android平台,需在BuildAssetBundle时指定BuildTarget.Android,并确保使用正确的持久化数据路径。同时,文中提供了AssetbundleBaseURL的代码示例,以适应不同平台。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)unity导出andriod时报错:Moving file failed,如下图,

解决:在导出的路径中已存在3456.apk了,且这个apk阻止修改!重命名导出的apk即可。

(2)在Android平台下,无法加载打包的文件(.assetbundle 、.unity3d、...),查看打包代码中是否写入了打包平台信息:

打包AssentBundle,最核心的方法:

BuildPipeline.BuildAssetBundle (obj, null, targetPath, BuildAssetBundleOptions.CollectDependencies)

不过这是默认的电脑上打包的资源只可以电脑上用

安卓打包需要添加参数:

BuildPipeline.BuildAssetBundle(Selection.activeObject, selection, path, BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets,BuildTarget.Android);

Iphone打包也需要添加参数:
 BuildPipeline.BuildAssetBundle(Selection.activeObject, selection, path, BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets,BuildTarget.iPhone);

(3)Android平台下保存或者加载Assetbundle文件的路径

path="file:///"+Application.persistentDataPath+"/res_name";(Android/com.productname.company/files/,测试结果,该路径可读写数据)

path="jar:file://"+Application.datapath+"!/assets/***/res_name";(/mnt/sdcard/com.productname.company/pkg.apk!/assest/,测试结果,该路径仅读数据,并且只读文件必须放在文件夹StreamingAssets下,可在此目录下新建文件夹***)

用以下步骤进行在Android机子上使用AssetBundle:

参考地址:http://www.narkii.com/club/forum.php?mod=viewthread&tid=299447&extra=page%3D{prevpage}&page=1
重点有2点:
Use the option "BuildTarget.Android".
Describe the path with triple slash "file:///"
以下是步骤:

Delete directories "Per Texture Materials", "assetbundles", and so on.  把已经导出过的包删掉
Use the option "BuildTarget.Android" to all "BuildPipeline.BuildAssetBundle".   要把BuildTarget为Android平台!!!
Run these on Editor. Character Generator/Generate Materials Character Generator/Create Assetbundles Character Generator/Update Character Element Database  
Copy Assetbundles database to Android device which like "/mnt/sdcard/assetbundles/"  把这些包放到Android的指定目录下
Modify AssetbundleBaseURL. (the point was "file:///") 修改获取AssetbundleBaseURL基础路径的地址

代码:
public static string AssetbundleBaseURL
{
    get
    {
        if (Application.platform == RuntimePlatform.WindowsWebPlayer || Application.platform == RuntimePlatform.OSXWebPlayer)
        {
            return Application.dataPath + "/assetbundles/";
        }
        else if (Application.platform == RuntimePlatform.Android)
        {
            return "file:///mnt/sdcard/assetbundles/";(这个路径本人测试了但是没成功)
        }
        else
        {
            return "file://" + Application.dataPath + "/../assetbundles/";
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值