当前位置: 首页 > news >正文

Unity安卓Android从StreamingAssets加载AssetBundle

在安卓下无法获取StreamingAssets目录下所有目录和文件名,所以需要提前将文件名整理成一个文件filelist.txt。

1.用批处理命令将StreamingAssets下所有文件名输出到filelist.txt中

chcp 65001是使用UTF-8编码,否则中文是乱码。

@echo off
chcp 65001
dir /b /s /a-d > filelist.txt

2.将filelist.txt中绝对路径转换成相对路径

打开filelist.txt,去掉StreamingAssets

3.确何filelist.txt为UTF-8

4.复制StreamingAssets目录下所有文件到PersistentData

void Start () {CopySteamingAssetsFileToPersistentDataPath();
}void CopySteamingAssetsFileToPersistentDataPath()
{string listFile = Path.Combine(Application.streamingAssetsPath, "filelist.txt");WWW reader = new WWW(listFile);while (!reader.isDone) { }string textString = reader.text;Debug.Log(textString.Length);List<string> striparr = textString.Split(new string[] { "\r\n" }, StringSplitOptions.None).ToList();List<string> lines = striparr.Where(s => !string.IsNullOrEmpty(s)).ToList();for (int i = 0; i < lines.Count; i++){string srcfile = Path.Combine(Application.streamingAssetsPath, lines[i]);WWW reader1 = new WWW(srcfile);while (!reader1.isDone) { }string dstFile = Path.Combine(Application.persistentDataPath, lines[i]);//安卓的路径只能是/,反斜杠\无效dstFile = dstFile.Replace('\\','/');string dir = Path.GetDirectoryName(dstFile);if (!Directory.Exists(dir)){Directory.CreateDirectory(dir);Debug.Log(dstFile);}File.WriteAllBytes(dstFile, reader1.bytes);}
}

5.AssetBundle资源需要针对Android单独打包,与Windows的不通用。

 打包完将资源复制到StreamingAssets下

ROBOCOPY Android  ..\Assets\StreamingAssets\Android  /E

 加载AssetBundle

//存放AssetBundle的根目录名字private static string rootFolder = "Android";//本地资源路径public string AbPath{ get{string path =
#if UNITY_ANDROID && !UNITY_EDITORApplication.persistentDataPath + "/";
#elseApplication.streamingAssetsPath + "/";
#endifreturn string.Format("{0}{1}/", path, rootFolder);}}
AssetBundle assetBundle = AssetBundle.LoadFromFile(string.Format("{0}{1}", AbPath, rootFolder));
......

相关文章:

Unity安卓Android从StreamingAssets加载AssetBundle

在安卓下无法获取StreamingAssets目录下所有目录和文件名&#xff0c;所以需要提前将文件名整理成一个文件filelist.txt。 1.用批处理命令将StreamingAssets下所有文件名输出到filelist.txt中 chcp 65001是使用UTF-8编码&#xff0c;否则中文是乱码。 echo off chcp 65001 d…...

【MySQL_06】表的相关操作

文章目录 一、表的基本操作1.1 创建表1.2 修改表结构1.2.1 添加列1.2.2 删除列1.2.3 修改列1.2.4 重命名列1.2.5 添加约束 1.3 删除表1.4 查询表结构1.5 重命名表1.6 复制表1.6.1 仅复制结构1.6.2 复制结构及数据 1.7 清空表数据 二、数据完整性约束2.1 主键约束2.2 唯一约束2.…...

如何选择开源向量数据库

文章目录 评估维度查询性能索引与存储扩展性数据管理能力生态支持 常见向量数据库对比 评估维度 选择开源向量数据库时&#xff0c;需要综合考虑查询性能、数据规模、索引构建速度、生态支持等多个因素&#xff0c;以下是关键的评估维度&#xff1a;选择开源向量数据库时&…...

c#面试题整理4

1.stirng str"",string strnull&#xff0c;俩者有何区别 空字符串占有存储控件&#xff0c;null不占用 2.class与struct的异同 异同class 可继承 引用类型 1.都可以定义方法字段 2.都可实例化&#xff0c;与类的使用几乎一样 struct 不可继承 值类型 只能声明带…...

智能焊机监测系统:打造工业安全的数字化盾牌

在现代工业生产中&#xff0c;焊机作为核心设备之一&#xff0c;其稳定性和安全性直接关系到生产效率和产品质量。德州迪格特科技有限公司推出的智能焊机监测系统&#xff0c;通过先进的技术手段&#xff0c;为工业生产构筑了一道坚固的安全防线。 智能监测&#xff0c;保障焊…...

Centos的ElasticSearch安装教程

由于我们是用于校园学习&#xff0c;所以最好是关闭防火墙 systemctl stop firewalld systemctl disable firewalld 个人喜欢安装在opt临时目录&#xff0c;大家可以随意 在opt目录下创建一个es-standonely-docker目录 mkdir es-standonely-docker 进入目录编辑yml文件 se…...

一二三应用开发平台——能力扩展:多数据源支持

背景 随着项目规模的扩大&#xff0c;单一数据源已无法满足复杂业务需求&#xff0c;多数据源应运而生。 技术选型 MyBatis-Plus 的官网提供了两种多数据源扩展插件&#xff1a;开源生态的 <font style"color:rgb(53, 56, 65);">dynamic-datasource</fon…...

pandas-基础(数据结构及文件访问)

1 Pandas的数据结构 1.1 Series 特点&#xff1a;一维的数据型对象&#xff0c;包含一个值序列和数据标签(即索引&#xff09; 创建Series&#xff1a; pandas.Series(dataNone, indexNone, dtypeNone, nameNone, copyFalse, fastpathFalse) 参数说明&#xff1a; data&a…...

数据分析与AI丨AI Fabric:数据和人工智能架构的未来

AI Fabric 架构是模块化、可扩展且面向未来的&#xff0c;是现代商业环境中企业实现卓越的关键。 在当今商业环境中&#xff0c;数据分析和人工智能领域发展可谓日新月异。几乎每天都有新兴技术诞生&#xff0c;新的应用场景不断涌现&#xff0c;前沿探索持续拓展。可遗憾的是&…...

如何根据应用需求选择光谱相机

一、按核心参数匹配需求 ‌光谱范围‌ ‌农业监测‌&#xff1a;需覆盖可见光至近红外&#xff08;400-1000nm&#xff09;&#xff0c;以捕捉作物叶绿素、水分等特征‌。 ‌地质勘探‌&#xff1a;需宽光谱&#xff08;350-2500nm&#xff09;及高分辨率&#xff08;3-10nm…...

内存泄漏出现的时机和原因,如何避免?

由于时间比较紧张我就不排版了&#xff0c;但是对于每一种可能的情况都会出对应的代码示例以及解决方案代码示例。 内存泄漏可能的原因之一在于用户在动态分配一个内存空间之中&#xff0c;忘记将这部分内容手动释放。例如&#xff1a;&#xff08;c之中使用new分配内存没有使…...

Python第十六课:深度学习入门 | 神经网络解密

🎯 本节目标 理解生物神经元与人工神经网络的映射关系掌握激活函数与损失函数的核心作用使用Keras构建手写数字识别模型可视化神经网络的训练过程掌握防止过拟合的基础策略一、神经网络基础(大脑的数字化仿生) 1. 神经元对比 生物神经元人工神经元树突接收信号输入层接收特…...

从0到1,带你开启TypeScript的奇妙之旅

目录 一、TypeScript 是什么? 二、为什么要学习 TypeScript? 三、快速上手:环境搭建与 Hello World (一)安装 TypeScript (二)创建第一个 TypeScript 文件 (三)编译 TypeScript 文件 (四)运行编译后的 JavaScript 文件 四、深入 TypeScript 核心语法 (一)…...

如何修复“RPC 服务器不可用”错误

远程过程调用&#xff08;Remote Procedure Call&#xff0c; RPC&#xff09;是允许客户端在不同计算机上执行进程的众多可用网络进程之一。本文将深入探讨RPC如何在不同的软件系统之间实现无缝消息交换&#xff0c;同时重点介绍与RPC相关的常见错误的一些原因。 什么是远程过…...

【redis】五种数据类型和编码方式

文章目录 五种数据类型编码方式stringhashlistsetzset查询内部编码 五种数据类型 字符串&#xff1a;Java 中的 String哈希&#xff1a;Java 中的 HashMap列表&#xff1a;Java 中的 List集合&#xff1a;Java 中的 Set有序集合&#xff1a;除了存 member 之外&#xff0c;还有…...

今日头条文章爬虫教程

今日头条文章爬虫教程 随着互联网的发展&#xff0c;新闻资讯类平台如今日头条积累了海量的数据。对于数据分析师、研究人员等群体来说&#xff0c;获取这些数据进行分析和研究具有重要的价值。本文将介绍如何使用Python编写爬虫&#xff0c;爬取今日头条的文章数据。 一、准…...

使用Modelsim手动仿真

FPGA设计流程 在设计输入之后,设计综合前进行 RTL 级仿真,称为综合前仿真,也称为前仿真或 功能仿真。前仿真也就是纯粹的功能仿真,主旨在于验证电路的功能是否符合设计要求,其特点是不考虑电路门延迟与线延迟。在完成一个设计的代码编写工作之后,可以直接对代码进行仿真,…...

从Manus看网络安全:通用AI智能体重构安全运营

当通用AI智能体遇见网络安全 开启主动防御的跃迁 在勒索软件平均潜伏期缩短至3.7天、APT攻击复杂度指数级攀升的当下&#xff0c;传统SOAR产品&#xff08;安全编排、自动化和响应&#xff09;正面临两大困境&#xff1a; 规则依赖症&#xff1a;基于Playbook的响应逻辑&…...

南开提出1Prompt1Story,无需训练,可通过单个连接提示实现一致的文本到图像生成。

&#xff08;1Prompt1Story&#xff09;是一种无训练的文本到图像生成方法&#xff0c;通过整合多个提示为一个长句子&#xff0c;并结合奇异值重加权&#xff08;SVR&#xff09;和身份保持交叉注意力&#xff08;IPCA&#xff09;技术&#xff0c;解决了生成图像中身份不一致…...

hooks useModule自定义hooks (二次封装AgGridReact ag-table)自定义表头,自定义表头搜索

场景业务&#xff1a; 多次运用AgGridReact的table 列表 思路&#xff1a; 运用自定义hooks进行二次封装&#xff1a; 通用配置例如&#xff1a;传参的参数&#xff0c;传参的url&#xff0c;需要缓存的key这些键值类 定制化配置例如&#xff1a;需要对table 的一些定制化传…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...