(1)路径格式:assetsPath = "Assets/xx/xx.xxx";
(2)编辑器下使用的加载方法:Resources.LoadAssetAtPath(assetsPath) ;
Asset文件夹下任意位置任意资源,打包后不存在Asset文件,仅在编辑器环境下运行使用。
它可以加载Assets目录下的任意文件夹下的资源,必须是”Assets/xx/xx.xxx”这种路径,并且要带文件的后缀名。
(3)编辑器和打包后都可使用的加载方法:AssetDatabase.LoadAssetAtPath(filePath);
AssetDatabase是一个API,它允许您访问您项目中的资源。它提供了查找资源、加载资源、创建资源、删除资源和修改资源的方法。
它可以读取Assets目录下的任意文件夹下的资源,必须是”Assets/xx/xx.xxx” 这种路径,并且要带文件的后缀名。
仅返回在 Project 视图中可见的资源对象。如果未找到资源,返回Null;
public string filePath;//存档路径
private void Awake()
{
filePath = "Assets/TempTestFile/XXX.mat";
}
private void testLoad()
{
//加载指定资源
Resources.LoadAssetAtPath(filePath);
AssetDatabase.loadasset(filePath);
//加载指定类型的资源
Material mat = AssetDatabase.LoadAssetAtPath("Assets/Materials", typeof(Material)) as Material;
Material mat = AssetDatabase.LoadAssetAtPath("Assets/Materials/XXX.mat");
}
但在打包过程中,会将Assets目录及其所有子目录下的名字为Resources的文件夹合并,并加密压缩。所以打包后只能读取不能写入。
并且在程序启动时会对Resources下的所有对象初始化,构建实例ID。这个过程耗时非线性增加,可能导致程序启动时间过长。
(1)路径格式:assetsPath = "XXX.png";
XXX.png资源已经在Resources文件夹中了。
(2)加载方法:Resources.Load(assetsPath);
编辑时和运行时都可以使用,直接读取Resources文件夹下的指定资源,
即以Resources文件夹为根目录开始的相对路径,且不包含资源的扩展名。
public string assetsPath;//存档路径
private void Awake()
{
assetsPath= "XXX.png";//资源文件直接放到Resources文件夹里
}
private void Load()
{
//1、加载某个资源,文件不用加后缀,直接文件名称即可
Resources.Load(assetsPath);
Resources.Load("资源名");
//2、加载指定文件夹下的所有资源
Resources.LoadAll("文件夹名");//同步加载
Resources.LoadAllAsync(文件夹名);//异步加载
//3、加载指定类型的某个资源
Resources.Load("Prefabs/Cube");
TextAsset itemText = Resources.Load("Config/Item");
string itemsJson = itemText.text;//获取文本文件里的内容
//注:txt/json等文本在Unity里面是TextAsset类型,这里加载放到Resources文件夹下Config文件夹里的命名为Item的Json文件
//4、卸载非GameObject类型的资源,将其他已加载资源及其克隆体卸载
Resources.UnloadAsset(obj);
//4、卸载所有没有用到的资源
Resources.UnloadUnusedAssets();
}
(1)说明:StreamingAssets流文件夹,一般是存放预存的信息、初始的AssetsBundle资源,不要去改动 ;
StreamingAssets文件夹目录下的所有资源都会打入发布包中,但资源都是不压缩的,所以它会比较大、占空间,且打包后运行时只能读不能写,
(2)加载方法:Application.streamingAssetsPath(path);
不同平台下该文件的路径也不同,可以用Application.streamingAssetsPath加载,会根据当前的平台,自动加载正确的streamingAsset文件;
public string filePath;//存档路径
private void Awake()
{
filePath = Application.streamingAssets +"/jsonDatas.json";
}
//直接加载资源
private void TestLoad()
{
Application.streamingAssetsPath(filePath);
}
//数据流形式读取指定路径的文件数据
private void LoadFile()
{
if (!File.Exists(FilePath))
{
Debug.Log("找不到存档文件");
}
else
{
//根据文件路径创建数据流
StreamReader sr = new StreamReader(FilePath);
//读取Json数据
string ReadStr = sr.ReadToEnd();
//关闭数据流
sr.Close();
//将获取到的Json数据转为Datas类数据,这里使用LitJson库解析,也可使用其他Json库
Ddatas tempDatas= JsonMapper.ToObject(ReadStr);
//把读取的数据赋值给目标数据
datas= tempDatas;
Debug.Log("本地存档读取赋值成功");
}
}
(1)磁盘上的实际文件,AssetBundle存档文件,包含可在运行时由 Unity 加载的特定于平台的非代码资源。
(2)AssetBundle”也可以指代通过代码进行交互以便从特定 AssetBundle 存档加载资源的实际 AssetBundle 对象。
用于返回工程文件所在位置的数据文件夹的路径
public string filePath;//存档路径
private void Awake()
{
filePath = Application.dataPath + "/StreamingFile/jsonDatas.txt";
filePath = Application.dataPath + "/StreamingAssets/jsonDatas.json";
}
//数据流形式读取文件数据
private void testLoad()
{
if (!File.Exists(FilePath)) Debug.Log("找不到存档文件");
else
{
StreamReader sr = new StreamReader(FilePath);
string ReadStr = sr.ReadToEnd();
sr.Close();
Ddatas tempDatas= JsonMapper.ToObject(ReadStr);
datas= tempDatas;
}
}
用于返回流数据的缓存目录,返回路径为相对路径,适合设置一些外部数据文件的路径。
public string filePath;//存档路径
private void Awake()
{
filePath = Application.streamingAssets +"jsonDatas.txt";
filePath = Application.dataPath + "/StreamingAssets/jsonDatas.json";
}
private void testLoad()
{
Application.streamingAssetsPath(filePath);
}
用于返回一个持久化数据存储目录的路径,可以在此路径下存储一些持久化的数据文件。
该值是目录路径;此目录中可以存储每次运行要保留的数据。在 iOS 和 Android 上发布时,persistentDataPath 指向设备上的公共目录。应用程序更新不会擦除此位置中的文件。用户仍然可以直接擦除这些文件。
内容可读写,不过只能运行时才能写入或者读取
是一个外部存储路径,和项目安装位置无关的绝对路径,多是保存用户信息数据的位置,升级版本不会影响到这些数据;
考虑多平台的话,尽量存到Application.persistenDataPath;
public string filePath;//存档路径
private void Temp()
{
filePath = Application.persistentDataPath + "/jsonDatas.json";
}
用于返回一个临时数据的缓存目录。
是用来放缓存和临时的,用户可以清理掉;
public string filePath;//存档路径
private void Temp()
{
filePath = Application.temporaryCachePath+ "/jsonDatas.json";
}
注:关于数据存储读取具体操作,可以参考我的其他文章笔记:
Unity数据存储学习——创建、存储、读取Json文件
Unity数据存储学习之——本地playerPref存储