unity学习21:Application类与文件存储的位置
目录
1 unity是一个跨平台的引擎
1.1 使用 Application类,去读写文件
1.2 路径特点
1.2.1 相对位置/相对路径:
1.2.2 固定位置/绝对路径:
1.3 测试方法,仍然挂一个C#脚本在gb上
2 游戏数据文件夹路径(只读)Application.dataPath
2.1 Application.dataPath
2.2 跨平台时不同,相对路径需要拼接外部路径
2.3 特点:
2.4 测试
3 Application.streamingAssetsPath (只读)
3.1 Application.streamingAssetsPath
3.2 在unity的编辑器默认是没有的,也不显示
3.3 特点:
3.4 测试
4 游戏持久化文件路径 persistentDataPath (可读可写)
4.1 persistentDataPath
4.2 特点
4.3 测试
5 游戏的临时文件夹 Application.temporaryCachePath
5.1 Application.temporaryCachePath
5.2 测试
1 unity是一个跨平台的引擎
- unity输出的游戏包,可以适应各种平台
- 比如 android , ios , 和一些主机游戏平台
1.1 使用 Application类,去读写文件
- 比如 Application.datapath
- 比如 Application.persistenpath
- 知道文件在哪儿,才可以去读,才可以去存
1.2 路径特点
1.2.1 相对位置/相对路径:
- dataPath和streamingAssetsPath这两个属性的返回值一般是相对于程序安装目录的位置,由于是相对位置适用于在多平台移植中设置要读取外部数据文件的路径
- 并且者2个文件夹时只读的
1.2.2 固定位置/绝对路径:
- persistentDataPath和temporaryCachePath这两个属性的返回值一般是程序所在平台的固定位置,对于不同的平台,其位置是不一样的,适合存放程序运行过程中产生的一些数据文件
- 可读可写
1.3 测试方法,仍然挂一个C#脚本在gb上
2 游戏数据文件夹路径(只读)Application.dataPath
2.1 Application.dataPath
- Application.dataPath
- 此属性用于返回程序的数据文件所在文件夹的路径(只读)。
- 返回路径为相对路径,不同的游戏平台的数据文件保存路径不同。
- windows的unity编辑器下,这个文件夹路径,其实就是 unity 编辑器的工程Assets目录路径
2.2 跨平台时不同,相对路径需要拼接外部路径
- unity可以跨平台,Application.dataPath在不同的平台下的路径是不同的
- windows的unity编辑器下是 unity 编辑器的工程Assets目录路径
- Win player:<包含可执行文件的文件夹路径>/Data
- Mac player:<应用程序路径>/<AppName.app>/Data
2.3 特点:
- 只读,
- 加密+压缩
2.4 测试
- Application.dataPath //返回的就是unity现在项目的Assets目录
- Application.dataPath+"/Readme" //返回的是拼接的路径下的文件
- "Application.dataPath"+Application.dataPath+"/Readme"
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ApplicationTest : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Debug.Log("Application.dataPath"+Application.dataPath);
Debug.Log("Application.dataPath"+Application.dataPath+"/Readme");
}
// Update is called once per frame
void Update()
{
}
}
3 Application.streamingAssetsPath (只读)
3.1 Application.streamingAssetsPath
- streamingAssetsPath:
- 此属性用于返回流数据的缓存目录,返回路径为相对路径,适合设置一下外部数据文件的路径
- windows的unity下,这个文件夹路径,其实就是 unity 编辑器的工程Assets目录路径下一个子文件夹
3.2 在unity的编辑器默认是没有的,也不显示
- 但是,在unity的编辑器默认是没有的,也不显示
- 需要手动创建
- 需要在工程里 手动创建这个文件夹,Application.streamingAssetsPath
3.3 特点:
- 只读,
- 加密+压缩
- Application.streamingAssetsPath
- 游戏的配置文件:比如存档? mod修改?
- 一些不需要加密的二进制文件
3.4 测试
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ApplicationTest : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Debug.Log("Application.dataPath"+Application.dataPath);
Debug.Log("Application.dataPath"+Application.dataPath+"/Readme");
Debug.Log("Application.persistentDataPath"+Application.persistentDataPath);
Debug.Log("Application.streamingAssetsPath"+Application.streamingAssetsPath);
}
// Update is called once per frame
void Update()
{
}
}
4 游戏持久化文件路径 persistentDataPath (可读可写)
4.1 persistentDataPath
- 持久化文件路径
- persistentDataPath:此属性用于返回一个持久化数据存储目录的路径(只读),
- 可以在此路径下存储一下持久化的数据文件。
- 对于同一平台,在不同程序中调用此属性时,其返回值是相同的,但是在不同的运行平台下,其返回值会不一样。
4.2 特点
- 可读,可写
- 可见,不加密,不压缩,方便阅读和拷贝
- 存储的文职,并不在 unity的项目的Assets这里了
- 可以看到下面的测试结果,这个persistantDataPath 是存储在C盘的。也是跨平台的
4.3 测试
- Application.persistantDataPath //返回的就是unity现在项目的Assets目录
- 游戏的配置,都存储在这个文件路径下
- 游戏存档,在 Roaming下?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ApplicationTest : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Debug.Log("Application.dataPath"+Application.dataPath);
Debug.Log("Application.dataPath"+Application.dataPath+"/Readme");
Debug.Log("Application.persistentDataPath"+Application.persistentDataPath);
Debug.Log("Application.streamingAssetsPath"+Application.streamingAssetsPath);
}
// Update is called once per frame
void Update()
{
}
}
5 游戏的临时文件夹 Application.temporaryCachePath
5.1 Application.temporaryCachePath
- temporaryCachePath:
- 此属性用于返回一个临时数据的缓存目录(只读)。
- 对于同一平台,在不同程序中调用此属性时,其返回值是相同的,但是在不同的运行平台下,其返回值是不一样的。
- 游戏读写文件时的临时的保存文件夹,可能就是类缓存之类的吧
5.2 测试
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ApplicationTest : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Debug.Log("Application.dataPath"+Application.dataPath);
Debug.Log("Application.dataPath"+Application.dataPath+"/Readme");
Debug.Log("Application.persistentDataPath"+Application.persistentDataPath);
Debug.Log("Application.streamingAssetsPath"+Application.streamingAssetsPath);
Debug.Log("Application.temporaryCachePath"+Application.temporaryCachePath);
}
// Update is called once per frame
void Update()
{
}
}