Unity 中 Application 四种常用目录总结

ops/2024/11/28 4:31:38/

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:用于存储临时文件,这些文件在应用退出时可能会被清理。

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


http://www.ppmy.cn/ops/137255.html

相关文章

docker compose的安装和使用

1. Docker Compose 简介 Docker Compose 是一个工具,用于定义和运行多容器的 Docker 应用。通过编写一个 docker-compose.yml 文件,可以一次性启动所有容器,并且方便管理容器之间的依赖。 2. 安装 Docker Compose 前提条件 确保已安装 Do…

【设计模式】【结构型模式(Structural Patterns)】之桥接模式(Bridge Pattern

1. 设计模式原理说明 桥接模式(Bridge Pattern) 是一种结构型设计模式,用于将抽象部分与实现部分分离,使它们可以独立变化。这种模式有助于解决因实现细节的变化而导致的代码膨胀问题。桥接模式的核心思想是通过组合而不是继承来…

ArcGIS 10.2软件安装包下载及安装教程!

今日资源:ArcGIS 适用系统:WINDOWS 软件介绍:ArcGIS是一款专业的电子地图信息编辑和开发软件,提供一种快速并且使用简单的方式浏览地理信息,无论是2D还是3D的信息。软件内置多种编辑工具,可以轻松的完成地…

上天入地 灵途科技光电技术赋能空间感知

近来,人工智能技术频频亮相各大马拉松赛事,成为引人注目的科技亮点。 11月3日,杭州马拉松首次启用了机器狗作为配速员,以稳定的节奏为选手提供科学的跑步节奏。 11月11日,亦庄半程马拉松的终点处,人形机器…

微信小程序:实现定时拍照与自动上传功能攻略——静音版

在之前的文章中,我介绍过可以用ctx.takePhoto来实现定时拍照,但是在实际使用过程中,会有快门声,影响用户体验感,本文中,我们将介绍如何在微信小程序中实现静音定时拍照功能,并将拍摄的照片上传到…

Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?

大家好,我是锋哥。今天分享关于【Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?】面试题。希望对大家有帮助; Elasticsearch中的节…

基于Java Springboot点餐系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

阿里Qwen系列开源模型介绍

模型种类丰富 Qwen2:包含Qwen2-0.5b、Qwen2-1.5b、Qwen2-7b、Qwen2-57b-a14b以及Qwen2-72b等五种规模的预训练和指令微调模型,其在多语言处理、长文本处理、代码生成、数学和逻辑推理等能力上,在mmlu、gpqa、humaneval等国际测评中得到了验证…