奇葩问题之奇葩解决方案系列——安卓手机外部加载Assetbundle

2023-11-06

一、前言

       首先,这个需求是这么被创造出来的,我们要在安卓手机上加载超过一个G的资源,正常的Unity的程序员都会立马想到使用Assetbundle进行资源打包和加载,我当然也不例外。于是乎我就吭哧吭哧的熟练的对资源进行打包,然后用异步 AssetBundle.LoadFromFileAsync进行加载,然鹅,居然读取不到资源。为啥?我这个资源是放在手机的SD卡新建的一个文件夹ResourcesData下,谷歌了很多大神的资料都说的是放到Unity的streamingAssets的目录下,比如松哥的文章Unity3D研究院之Android同步方法读取streamingAssets(八十八)可是这个目录是随着APK一起打包的,也就是说我想预先放置Assetbundle资源在安卓手机的指定目录下好像不行。

二、世界上本没有需求想多了就有了

     读取Assetbundle的代码如下:

 tempPathURL = "file:///storage/emulated/0" + "/ResourcesData/BattlefieldARElecSandbox/Assetbundles/Android/cube";
    private IEnumerator LoadAsync()
    {
        bundleLoadRequest = AssetBundle.LoadFromFileAsync(tempPathURL);
        while (!bundleLoadRequest.isDone)
        {

            yield return bundleLoadRequest;
        }

        var myLoadedAssetBundle = bundleLoadRequest.assetBundle;
        if (myLoadedAssetBundle == null)
        {
            uiText.text += "Failed LoadAsync:" + tempPathURL;
            Debug.Log("Failed to load AssetBundle!");
            yield break;
        }

        var assetLoadRequest = myLoadedAssetBundle.LoadAssetAsync<GameObject>(loadGameObjName);
        yield return assetLoadRequest;

        GameObject prefab = assetLoadRequest.asset as GameObject;
        prefab.transform.position = Vector3.zero;
        loadObj = Instantiate(prefab);

        myLoadedAssetBundle.Unload(false);

    }

在安卓系统的华为mate10和小米2S下试过了都不管用

但是接下来的代码:居然神奇的可以加载出来,资源还是原来的资源,只不过从AssetBundle.LoadFromFileAsync换成了WWW的加载方式,但是这个WWW的加载不能做进度条啊,会在点击加载的时候卡一会儿,因为不是异步加载,我刚开始以为是我打包的姿势不对,然后我又分别打包安卓的Assetbundle的时候三种压缩模式都使用过了,结果还是一样。

 // tempPathURL = "file:///storage/emulated/0" + "/ResourcesData/BattlefieldARElecSandbox/Assetbundles/Android/cube";
    private IEnumerator LoadWWW2()
    {
        // tempPathURL = "file:///storage/emulated/0" + "/ResourcesData/hjs";
        // tempPathURL = Application.streamingAssetsPath + "/Android/Models/hjs";

        using (WWW www = WWW.LoadFromCacheOrDownload(tempPathURL,5))
        {
            while (!www.isDone)
            {
                LoadPro = Mathf.RoundToInt(www.progress) * 100 + "%";
                Debug.Log(LoadPro);
                yield return new WaitForSeconds(0.5f);
            }
            if (!string.IsNullOrEmpty(www.error))
            {
                uiText.text += "加载错误:" + www.error;
                yield break;
            }
            else
            {
                LoadPro = "100%";
                AssetBundle bundle = www.assetBundle;
                var prefab = bundle.LoadAsset<GameObject>(loadGameObjName);
                loadObj = Instantiate(prefab);
                loadObj.transform.position = new Vector3(3, 5, 0);

            }
        }
    }

三、总结
我想在手机的SD指定文件夹预先放置Unity的打包好的资源Assetbundle,然后加载的时候只能用WWW的方式,而AssetBundle.LoadFromFileAsync这个方法不管用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

奇葩问题之奇葩解决方案系列——安卓手机外部加载Assetbundle 的相关文章

  • 游戏开发unity编辑器扩展知识系列:修改纹理资源的TextureType

    需要用TextureImporter导入资源 调用如下代码 TextureImporter importer TextureImporter TextureImporter GetAtPath path importer textureTy
  • Unity单元测试流程

    文章目录 环境 流程 1 创建一个存放 单元测试程序集 的目录 2 打开 Test Runner 窗口 3 选择单元测试模式 4 创建单元测试程序集 5 创建测试脚本 6 运行测试 环境 Unity 2020 3 3f1 流程 1 创建一个
  • Unity 安卓打包

    Unity打包的方式有很多种 自动打包和手动打包 今天小弟就鼓捣鼓捣unity手动打包 如果想动态打包的话 可以去看其他大佬的帖帖哈 unity打包先配置环境 下载unity的时候可以顺道把unity的安卓包下载下来 如果忘了也没事 可以从
  • unity网络资源导入

    1 找到需要导入的文件 这里导入fbx格式 2 打开unity界面 在Asset目录下创建文件夹FBX 将需要导入的fbx预制体或整个文件夹拖入创建的FBX文件夹下 3 选中需要的fbx预制体并拖至场景中 4 双击定位到当前物体 5 找到需
  • 1.17 从0开始学习Unity游戏开发--场景切换

    前面的所有文章我们都在一个固定的游戏场景内进行开发 在最开始介绍场景这个概念的时候就已经提及 这个场景可以是一张地图 或者是一个对战房间等等 所以显然这个场景可以有多个 并且可以从一个场景切换到另外一个场景 那么在Unity中如何进行场景切
  • Unity中级客户端开发工程师的进阶之路

    上期UWA技能成长系统之 Unity高级客户端开发工程师的进阶之路 得到了很多Unity开发者的肯定 通过系统的学习 可以掌握游戏性能瓶颈定位的方法和常见的CPU GPU 内存相关的性能优化方法 UWA技能成长系统是UWA根据学员的职业发展
  • Unity 粒子特效、材质发光 HDR ShaderGraph图文教程[完成lit发光设置]

    效果如图 准备工作 在hdr模式下 关闭Directional Light 相机设置 移动球挂一个点光源作为子节点 设置自行调节 0 创建移动球的材质及shader shader gt 在Project Create Shader Grap
  • FBX导入Unity中模型没有材质的处理

    一 3dMax导出FBX时的注意事项 导出时 确保maps文件存在 里面放着fbx用到的image 二 在Unity中的设置 1 文件拖入Unity的Assets文件夹中 2 查看模型的材质是否存在 如下所示 材质为None 此时拖入sce
  • Unity Shader入门精要第七章 基础纹理之遮罩纹理

    Unity系列文章目录 文章目录 Unity系列文章目录 前言 一 实践 参考 前言 遮罩纹理 mask texture 是本章要介绍的最后一种纹理 它非常有用 在很多商业游戏中 都可以见到它的身影 那么什么是遮罩呢 简单来讲 遮罩允许我们
  • Unity学习笔记(一)—— 基础知识

    一 基础知识 1 开发团队组成 2 unity特点 图形界面 所见即所得 入门简单 支持C 比OC C 更友好 js 国内外资源丰富 因为使用的人多 跨平台性好 PC端 移动端等 对VR AR的支持最完善 3 成功案例 游戏 炉石传说 神庙
  • unity后台加密时间锁

    前言 在做一些项目的时候 有些不良甲方在给完项目后会有不给尾款的情况 之前都是加一些水印啥的 感觉不是很方便 第一不美观 第二如果甲方给完尾款后还得重新打包去水印 然后又做过一个本地的时间锁 等到时间 程序直接退出 但是感觉还是不方便 有时
  • unity3d大型互动照片墙

    1 本次应客户需求 制作一个大型照片墙互动 输出分辨率为9600 4320 注 unity3d官方推荐最大分辨率为8192 3686 4 经过现场长达24小时暴力测试中途未发生问题 姑且判定可以达到正常标准 废话不多说 先上效果 unity
  • Unity保存图片到相册

    Unity保存图片到Android相册 Java 纯文本查看 复制代码 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
  • unity 性能查看工具Profiler

    文章目录 前言 profiler工具介绍 菜单栏 帧视图 模块视图 模块详细信息 通过profiler分析优化游戏性能 最后 前言 每次进行游戏优化的时候都用这个工具查看内存泄漏啊 代码优化啊之类的东西 真的好用 但是之前也就是自己摸索一下
  • unity实现鼠标右键控制视角

    主要实现的功能是相机跟随主角 鼠标右击移动后 相机的视角会旋转 思路 在主角里创建空的子物体 把相机绑在空物体上 通过旋转空物体来实现视角的旋转 要把相机调整到适当位置 代码如下 public float rotateSpeed 100 设
  • 【Unity步步升】监控与检测物体的各种方案,如:射线、碰撞、挂载等...

    在制作AR模型数值控制方案的时候遇到了检测的问题 学习过程受益匪浅 故今天为大家整理带来一篇监控与检测物体的参考方案集合 目录 一 射线检测 二 物体存在检测 三 碰撞检测 一 射线检测 单射线检测 首先完成搭建场景如下图1 1 我这里用到
  • Unity旋转以及万向锁问题

    我之前研读了一些关于unity旋转相关的博客 一直想抽个时间写个总结 但是由于实习太忙一直没有写 趁着今天请了假晚上有时间把这段时间一些学习心得写出来 Unity inspector面板中的Rotation 在unity中 想必大家最先接触
  • unity dots jobSystem 记录

    Looking for a way to get started writing safe multithreaded code Learn the principles behind our Job System and how it w
  • 【转载】【Unity】WebSocket通信

    1 前言 Unity客户端常用的与服务器通信的方式有socket http webSocket 本文主要实现一个简单的WebSocket通信案例 包含客户端 服务器 实现了两端的通信以及客户端向服务器发送关闭连接请求的功能 实现上没有使用U
  • Unity中URP下的指数雾

    文章目录 前言 一 指数雾 雾效因子 1 FOG EXP 2 FOG EXP2 二 MixFog 1 ComputeFogIntensity 雾效强度计算 2 lerp fogColor fragColor fogIntensity 雾效颜

随机推荐

  • abp执行mysql语句_ABP的Core2.0使用mysql数据,在使用linq语句报错了

    System InvalidOperationException HResult 0x80131509Message An exception occurred while reading a database value for prop
  • Android移动开发-使用OpenGL来绘制3D纹理图的实现

    OpenGL 全写Open Graphics Library 是指定义了一个跨编程语言 跨平台的编程接口规格的专业的图形程序接口 它用于三维图像 二维的亦可 是一个功能强大 调用方便的底层图形库 OpenGL是行业领域中最为广泛接纳的 2D
  • 『HTML&CSS』选择器(一)

    前面我们说过 CSS一共分为两大块 选择器和声明块 本篇博客主要对选择器进行一些简单的介绍 元素选择器 我们前面使用的都是元素选择器 通过元素选择器可以选择页面中的所有指定元素 语法 元素名 标签名 代码演示
  • 深度学习:Opencv的BlobfromImage如何工作

    深度学习 Opencv的BlobfromImage如何工作 1 原理 1 2 均值减法是什么 1 3 cv2 dnn BlogFromImage 2 源码 参考 想要从深度神经网络获取正确的预测 首先需要预处理数据 在深度学习 图像分类中
  • vue入门者uni-app开发之---入坑

    vue入门者uni app开发之 入坑 前言 起步 项目结构 开始开发 举例登陆全局保持状态 退出登陆 前言 作为一个刚入门vue的前端 我们公司主要运营公众号网页 之前一直用的jq 发现用户体验差的一匹 后来公司决定将前端技术栈定为vue
  • js基础面试题

    一 值类型与引用类型 1 js如何判断数据类型 值类型 javascript存储数据两个区域 栈 堆 栈 通常空间是固定 堆通常空间是动态的分配 js值类型 名称与值都存储在栈中 var a 15 值类型 var b a 把a的值赋值给 b
  • arm芯片厂家排名_国产芯片目前至少有10种,其中有3种,达到了世界顶尖水平

    说起来 中国芯的发展史称得上是一部磨难史 因为技术 设备 人才等都被西方国家封锁 就是为了让中国这个大市场巨额进口芯片 但这些年 中国的企业也没有闲着 可以说把世界上的主流的芯片架构尝试了个遍 就是为了找出一台适合自己发展的路来 目前国内的
  • 9款超级实用的网页设计工具,快来看看有没有你用过的

    随着网络时代的快速发展 游戏 购物 音乐 影视和社交网站的兴起都表明了网页设计的重要性 网页设计工具作为网页设计师的生产工具 自然要选择好的 让我们分享9个高质量的网页设计工具 让您的设计效率悄然提高 即时设计 即时设计是一款免费的在线 U
  • 如何选择LDO (LDO的关键指标及定义)

    1 LDO选型关键指标及定义 1 1 输入电压范围 LDO的输入电压范围决定了最低的可用输入电源电压 指标可能提供宽的输入电压范围 最小的输入电压VIN必须大于VOUT VDO 需要注意 这与器件Datasheet中所给出的输入电压最小值无
  • 风格迁移:一文梳理经典方法发展脉络及原理:Gram矩阵、WCT、WCT2

    风格迁移 一文梳理经典方法发展脉络及原理 1 Image Style Transfer Using Convolutional Neural Networks Gram矩阵 CVPR2016 1 1 概述 1 2 方法 2 Deep Pho
  • 代码重定位

    1 程序段介绍 参见博客 C语言程序段的定义 实际应用分析 2 什么是代码重定位 代码重定位就是将代码搬运到链接地址处 实际在操作时就是将代码复制一份到链接地址处 我们把代码下载到设备的Flash中 然后代码运行却要求另一个地址 于是我们就
  • vue图片预览放大,缩小,旋转等功能,用 v-viewer来实现,还有他的api

    前言 推荐一款特别优秀的插件 viewerjs 他可以实现图片预览功能 点击图片实现弹框操作图片的效果 点我进入GitHub地址 实现效果 这里说先下实现步骤 步骤一 安装 注意这里是 v viewer npm install v view
  • Spark函数式编程基础

    目录 一 函数定义与使用 1 函数式编程简介 2 匿名函数 3 占位符语法 4 高阶函数 5 闭包 二 针对容器的操作 1 遍历操作 2 映射操作 3 过滤操作 4 规约操作 5 拆分操作 一 函数定义与使用 1 函数式编程简介 函数式编程
  • maven怎么引入jdom_Maven添加本地依赖

    用mvn命令把本地jar包添加到maven仓库 mvn install install file Dfile f aliyn openservices jar DgroupId com aliyun DartifactId openserv
  • Python:sklearn数据预处理中fit(),transform()与fit_transform()的区别

    1 概述 注意这是数据预处理中的方法 Fit Method calculates the parameters and and saves them as internal objects 解释 简单来说 就是求得训练集X的均值啊 方差啊
  • STM32与拉力传感器通信

    目录 第一部分 设备通信图 第二部分 设备接线 HX711与传感器的接线 HX711与MCU的接线 第三部分 驱动代码 HX711引脚初始化 Dout CLK HX711读取数据函数 HX711获取传感器的值 头文件定义 实验结果 第一部分
  • linux svn 记住密码,Linux(Ubuntu)下保存SVN账户密码-Fun言

    Linux Ubuntu 下用SVN进行更新等操作时 总是提示输入用户名和密码 很不方便 解决方法1 推荐 不需要修改配置文件 只需要用sudo执行一次svn命令 并记住密码就行了 记住密码需要权限的 sudosvn ci m featur
  • 如何让Chrome浏览器允许http网站打开摄像头和麦克风

    问题来源 本地运行的项目调用摄像头好用 访问线上地址 发现调用摄像头的方法都不存在 问了度娘 发现该问题与浏览器的安全策略有关 出于安全考虑 浏览器是不允许随便开启摄像头的 https协议下方可开启 解决 这一项功能要用到谷歌浏览器的实验性
  • window 安装Hadoop3.0.0

    第一步 Hadoop 官网下载地址 https hadoop apache org releases html 第二步 将下载hadoop 3 0 0 tar gz 解压至指定文件夹 C hadoop 第三步 配置hadoop 涉及环境变量
  • 奇葩问题之奇葩解决方案系列——安卓手机外部加载Assetbundle

    一 前言 首先 这个需求是这么被创造出来的 我们要在安卓手机上加载超过一个G的资源 正常的Unity的程序员都会立马想到使用Assetbundle进行资源打包和加载 我当然也不例外 于是乎我就吭哧吭哧的熟练的对资源进行打包 然后用异步 As