Unity 中 Application 四种常用目录总结

Unity 中 Application 提供了多种目录路径用于不同场景,以下是四种常用目录路径的区别、用途和跨平台下的具体路径示例:


1. Application.dataPath

描述

  • 指向项目的 数据目录
  • 在编辑器中指向 Assets 目录,打包后的应用程序中是构建的 Data 文件夹路径。

用途

  • 只读,通常用于访问内部资源。

示例路径

  • Windows(编辑器): C:/YourProject/Assets
  • Windows(打包): C:/YourGame/GameName_Data
  • Android: jar:file:///data/app/YourPackageName/base.apk!/assets
  • iOS: /var/containers/Bundle/Application/YourAppID/YourAppName.app/Data

示例代码

  • Windows:
    string dataPath = Application.dataPath;
    Debug.Log("Data Path on Windows: " + dataPath);
    // 输出示例: C:/Users/Username/Projects/MyGame/Builds/MyGame_Data
    
  • Android:
    string dataPath = Application.dataPath;
    Debug.Log("Data Path on Android: " + dataPath);
    // 输出示例: /data/app/com.company.mygame-1/base.apk
    

2. Application.persistentDataPath

描述

  • 指向应用的 持久化存储目录,适合保存需要长期存储的数据(如存档、设置)。
  • 数据不会因应用更新或重启丢失,但可能因用户清除数据而丢失。

用途

  • 可读写,适合存储 游戏存档、设置文件 等。

示例路径

  • Windows: C:/Users/YourUsername/AppData/LocalLow/CompanyName/GameName
  • Android: /data/data/YourPackageName/files
  • iOS: /var/mobile/Containers/Data/Application/YourAppID/Documents

-示例代码:

  • Windows:
    string streamingAssetsPath = Application.streamingAssetsPath;
    Debug.Log("Streaming Assets Path on Windows: " + streamingAssetsPath);
    // 输出示例: C:/Users/Username/Projects/MyGame/Builds/MyGame_Data/StreamingAssets
    
  • Android:
    string streamingAssetsPath = Application.streamingAssetsPath;
    Debug.Log("Streaming Assets Path on Android: " + streamingAssetsPath);
    // 输出示例: jar:file:///data/app/com.company.mygame-1/base.apk!/assets
    

3. Application.streamingAssetsPath

描述

  • 指向 Assets/StreamingAssets 文件夹。
  • 文件 只读,打包后路径因平台而异,适合存放初始资源、配置文件等。

用途

  • 存储随应用分发的文件(例如配置文件、媒体文件)。

示例路径

  • Windows(编辑器): C:/YourProject/Assets/StreamingAssets
  • Windows(打包): C:/YourGame/GameName_Data/StreamingAssets
  • Android: jar:file:///data/app/YourPackageName/base.apk!/assets
  • iOS: /var/containers/Bundle/Application/YourAppID/YourAppName.app/Data/Raw

示例代码:

  • Windows:
    string persistentDataPath = Application.persistentDataPath;
    Debug.Log("Persistent Data Path on Windows: " + persistentDataPath);
    // 输出示例: C:/Users/Username/AppData/LocalLow/Company/ProductName
    
  • Android:
    string persistentDataPath = Application.persistentDataPath;
    Debug.Log("Persistent Data Path on Android: " + persistentDataPath);
    // 输出示例: /data/data/com.company.mygame/files
    

4. Application.temporaryCachePath

描述

  • 指向 临时存储目录,数据可能会被系统清理。
  • 适合存储缓存文件、临时数据。

用途

  • 可读写,适合存储 下载的临时数据 等。

示例路径

  • Windows: C:/Users/YourUsername/AppData/LocalLow/CompanyName/GameName/Cache
  • Android: /data/data/YourPackageName/cache
  • iOS: /var/mobile/Containers/Data/Application/YourAppID/Library/Caches

示例代码:

  • Windows:
    string temporaryCachePath = Application.temporaryCachePath;
    Debug.Log("Temporary Cache Path on Windows: " + temporaryCachePath);
    // 输出示例: C:/Users/Username/AppData/Local/Temp/Company/ProductName
    
  • Android:
    string temporaryCachePath = Application.temporaryCachePath;
    Debug.Log("Temporary Cache Path on Android: " + temporaryCachePath);
    // 输出示例: /data/data/com.company.mygame/cache
    

总结

属性功能描述可读/可写示例路径(Windows/Android/iOS)
Application.dataPath数据目录,存储应用数据文件只读C:/YourGame/GameName_Data / jar:file:///.../base.apk!/assets / /YourAppName.app/Data
Application.persistentDataPath持久化存储目录,用户可访问可读可写C:/Users/.../LocalLow/... / /data/data/.../files / /Documents
Application.streamingAssetsPathStreamingAssets 文件路径只读C:/YourGame/.../StreamingAssets / jar:file:///.../base.apk!/assets / /YourAppName.app/Data/Raw
Application.temporaryCachePath临时缓存目录可读可写C:/Users/.../Cache / /data/data/.../cache / /Library/Caches

  • Application.dataPath:用于访问应用程序的资源文件,通常是只读的。
  • Application.streamingAssetsPath:用于存储和访问需要在运行时动态加载的文件,通常用于大文件。
  • Application.persistentDataPath:用于存储需要长期保存的数据,不会随着应用的更新而被清除。
  • Application.temporaryCachePath:用于存储临时文件,这些文件在应用退出时可能会被清理。

这些路径在不同平台上的具体路径可能会有所不同,但它们的用途和行为是相似的。通过正确使用这些路径,可以确保应用程序在不同平台上都能正确地管理和访问文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/922807.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux网络——NAT/代理服务器

一.NAT技术 1.NAT IP转换 之前我们讨论了, IPv4 协议中, IP 地址数量不充足的问题,NAT 技术就是当前解决 IP 地址不够用的主要手段, 是路由器的一个重要功能。 NAT 能够将私有 IP 对外通信时转为全局 IP. 也就是一种将私有 IP 和全局IP 相互转化的技术方法: 很…

极简开源Windows桌面定时提醒休息python程序

当我们长期在电脑面前坐太久后,会产生一系列健康风险,包括干眼症,颈椎,腰椎,肌肉僵硬等等。解决方案是在一定的时间间隔内我们需要have a break, 远眺可以缓解干眼症等眼部症状,站起来走动两步,…

Windows Qtcreator不能debug 调试 qt5 程序

Windows下 Qt Creator 14.0.2 与Qt5.15.2 正常release打包都是没有问题的,就是不能debug,最后发现是两者不兼容导致的; 我使用的是 编译器是 MinGW8.1.0 ,这个版本是有问题的,需要更新到最新,我更新的是Mi…

【论文笔记】Number it: Temporal Grounding Videos like Flipping Manga

🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 基本信息 标题: Number it: Temporal Grou…

【模版进阶】—— 我与C++的不解之缘(十八)

前言: ​ 之前浅浅的学了一下模版,这里来深入学习一下模版 1、非类型模版参数 模版参数可以分为类型形参 和非类型形参 类型形参:出现在模板参数列表中,跟在**class或者typename**之类的参数类型名称。非类型形参: 就是…

Diving into the STM32 HAL-----Timers笔记

嵌入式设备会按时间执行某些活动。对于真正简单且不准确的延迟,繁忙的循环可以执行任务,但是使用 CPU 内核执行与时间相关的活动从来都不是一个聪明的解决方案。因此,所有微控制器都提供专用的硬件外设:定时器。定时器不仅是时基生…

质量留住用户:如何通过测试自动化提供更高质量的用户体验

在当今竞争异常激烈的市场中,用户手头有无数种选择,但有一条真理至关重要: 质量留住用户。 产品的质量,尤其是用户体验 (UX),直接决定了客户是留在您的品牌还是转而选择竞争对手。随着业务的发展,出色的用户…

C++ 优先算法 —— 长度最小的子数组(滑动窗口)

目录 题目:长度最小的子数组 1. 题目解析 2. 算法原理 Ⅰ. 暴力枚举 Ⅱ. 滑动窗口(同向双指针) 滑动窗口正确性 3. 代码实现 Ⅰ. 暴力枚举(会超时) Ⅱ. 滑动窗口(同向双指针) 题目:长…

GPT系列文章

GPT系列文章 GPT1 GPT1是由OpenAI公司发表在2018年要早于我们之前介绍的所熟知的BERT系列文章。总结:GPT 是一种半监督学习,采用两阶段任务模型,通过使用无监督的 Pre-training 和有监督的 Fine-tuning 来实现强大的自然语言理解。在 Pre-t…

进程间通信5:信号

引入 我们之前学习了信号量,信号量和信号可不是一个东西,不能混淆。 信号是什么以及一些基础概念 信号是一种让进程给其他进程发送异步消息的方式 信号是随时产生的,无法预测信号可以临时保存下来,之后再处理信号是异步发送的…

代理模式:静态代理和动态代理(JDK动态代理原理)

代理模式:静态代理和动态代理以及JDK动态代理原理 为什么要使用代理模式?静态代理代码实现优缺点 动态代理JDK动态代理JDK动态代理原理JDK动态代理为什么需要被代理的对象实现接口?优缺点 CGLIB动态代理优缺点 代理模式的应用 为什么要使用代…

【AI技术赋能有限元分析应用实践】pycharm终端与界面设置导入Abaqus2024自带python开发环境

目录 一、具体说明1. **如何在 Windows 环境中执行 Abaqus Python 脚本**2. **如何在 PyCharm 中配置并激活 Abaqus Python 环境**3. **创建 Windows 批处理脚本自动执行 Abaqus Python 脚本**总结二、方法1:通过下面输出获取安装路径导入pycharm方法2:终端脚本执行批处理脚本…

【消息序列】详解(6):深入探讨缓冲区管理与流量控制机制

目录 一、概述 1.1. 缓冲区管理的重要性 1.2. 实现方式 1.2.1. HCI_Read_Buffer_Size 命令 1.2.2. HCI_Number_Of_Completed_Packets 事件 1.2.3. HCI_Set_Controller_To_Host_Flow_Control 命令 1.2.4. HCI_Host_Buffer_Size 命令 1.2.5. HCI_Host_Number_Of_Complete…

虚拟局域网PPTP配置与验证(二)

虚拟局域网PPTP配置与验证(二) windows VPN客户端linux 客户端openwrt客户端性能验证虚拟局域网PPTP配置与验证(一)虚拟局域网PPTP配置与验证(二) : 本文介绍几种客户端连接PPTP服务端的方法,同时对linux/windows/openwrt 操作系统及x86、arm硬件平台下PPTP包转发性能进…

uniapp中使用uni-forms实现表单管理,验证表单

前言 uni-forms 是一个用于表单管理的组件。它提供了一种简化和统一的方式来处理表单数据,包括表单验证、字段绑定和提交逻辑等。使用 uni-forms可以方便地创建各种类型的表单,支持数据双向绑定,可以与其他组件及API进行良好的集成。开发者可…

Hive构建日搜索引擎日志数据分析系统

1.数据预处理 根据自己或者学校系统预制的数据 使用less sogou.txt可查看 wc -l sogou.txt 能够查看总行数 2.数据扩展部分 我的数据位置存放在 /data/bigfiles 点击q退出 将一个文件的内容传递到另一个目录文件下 原数据在 /data/bigfiles ->传递 到/data/workspac…

网络安全的学习方向和路线是怎么样的?

最近有同学问我,网络安全的学习路线是怎么样的? 废话不多说,先上一张图镇楼,看看网络安全有哪些方向,它们之间有什么关系和区别,各自需要学习哪些东西。 在这个圈子技术门类中,工作岗位主要有以…

深入浅出分布式缓存:原理与应用

文章目录 概述缓存分片算法1. Hash算法2. 一致性Hash算法3. 应用场景Redis集群方案1. Redis 集群方案原理2. Redis 集群方案的优势3. Java 代码示例:Redis 集群数据定位Redis 集群中的节点通信机制:Gossip 协议Redis 集群的节点通信:Gossip 协议Redis 集群的节点通信流程Red…

Mysql的加锁情况详解

最近在复习mysql的知识点,像索引、优化、主从复制这些很容易就激活了脑海里尘封的知识,但是在mysql锁的这一块真的是忘的一干二净,一点映像都没有,感觉也有点太难理解了,但是还是想把这块给啃下来,于是想通…

论文模型设置与实验数据:scBERT

Yang, F., Wang, W., Wang, F. et al. scBERT as a large-scale pretrained deep language model for cell type annotation of single-cell RNA-seq data. Nat Mach Intell 4, 852–866 (2022). https://doi.org/10.1038/s42256-022-00534-z 论文地址:scBERT as a…