Unity对API的合理利用不仅可以减轻编码负担,而且往往可以提高程序的运行效率,尽管官方给出了较为丰富的API文档,然而这并不能满足实际开发的需要,因为官方给出的API解释往往只描述相应的API的主要功能,缺少对其边界条件的说明和API的算法解释,于是熟悉API也成了新手进阶的必经之路,对学习过程做一个记录。Application类不含实例属性和实例方法,在脚本中通过直接调用Application类的静态属性和静态方法来控制程序的运行时数据,如场景的管理、数据的加载等。
文章目录
- 一、Application类静态属性
- 1、dataPath属性:数据文件路径
- (1)基本语法
- (2)功能说明
- (3)代码实现
- 2、loadedLevel属性:关卡索引
- (1)基本语法
- (2)功能说明
- (3)代码实现
一、Application类静态属性
在Application类中,设计的静态属性主要有dataPath和loadedLevel。由于Application类的persistentDataPath属性、streamingAssetsPath属性和temporaryCachePath属性的功能与dataPath属性功能相近,所以合并起来解释。
1、dataPath属性:数据文件路径
(1)基本语法
public static string dataPath { get; }
(2)功能说明
此属性用于返回程序的数据文件所在文件夹的路径(只读)。返回路径为相对路径,不同游戏平台的数据文件保存路径不用
- Unity Editor:<工程文件夹所在路径>/Assets
- Mac player:<应用程序路径>/Contents
- iPhone player:<应用程序路径>/ < AppName > / Data
- Win player:<包含可执行文件的文件夹路径> / Data
- Web player:播放器数据文件夹的绝对路径(没有实际的数据文件名称)
- Flash:播放器数据文件夹的绝对路径(没有实际的数据文件名称)
Notes:
与此属性功能想进的属性有persistentDataPath、streamingAssetsPath和tempory-CachePath,它们的具体功能如下
- persistentDataPath:此属性用于返回一个持久化数据存储目录的路径(只读),可以在此路径下存储一些持久化的数据文件。对于同一平台,在不同程序中调用此属性时,其返回值是相同的,但是在不同的运行平台下,其返回值会不一样。
- streamingAssetsPath:此属性用于返回流数据的缓存目录,返回路径为相对路径,适合设置一些外部数据文件的路径
- tempory-CachePath:此属性用于返回一个临沭数据的缓存目录(只读)。对于同一平台,在不同程序中调用此属性时,其返回值是相同的,但是在不同的运行平台下,其返回值时不一样的。
(3)代码实现
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DataPath_demo : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
//4种不同的路径,都为只读
//dataPath和streamingAssetsPath的路径位置一般是相对程序的安装目录位置
//persistentData和temporaryCachePath的路径位置一般是相对所在系统的固定位置
Debug.Log("dataPath:" + Application.dataPath);
Debug.Log("persistentDataPath:" + Application.persistentDataPath);
Debug.Log("streamingAssetsPath:" + Application.persistentDataPath);
Debug.Log("temporaryCachePath:" + Application.temporaryCachePath);
}
}
在这段代码中,分别打印了4中不同的路径模式,其中dataPath和streamingAssets-Path这两个属性的返回值一般是相对于程序安装目录的位置。由于是相对路径,这两个属性非常适合与在多平台移植中设置要读取的外部数据文件的路径,persistentDataPath和temporaryCachePath这两个属性的返回值一般是hi程序所在平台的固定位置,对于不同,其位置是不一样的,适合存放程序运行程序过程中产生的一些数据文件
2、loadedLevel属性:关卡索引
(1)基本语法
public static int loadedLevel { get; }
(2)功能说明
此属性用于返回当前程序最后加载的关卡(即Scene)的索引值(只读)
(3)代码实现
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LoadedLevel_demo : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
//返回当前场景的索引值
Debug.Log("loadedLevel:" + Application.loadedLevel);
//返回当前场景的名字
Debug.Log("loadedLevelName:" + Application.loadedLevelName);
//是否有场景正在被加载
//在使用Application类的静态方法LoadLevel或LoadLevelAdditive加载一个新的场景时
//常常需要持续一段时间才能加载完毕,当场景加载完毕时,isLoadingLevel返回true,
//否则返回false
Debug.Log("isLoadingLevel:" + Application.isLoadingLevel);
//返回游戏中可被加载的场景数量
Debug.Log("levelCount:" + Application.levelCount);
//返回当前游戏的运行平台
//游戏的运行平台有很多种,例如手机、电脑、游戏机等,具体类型可在枚举类
//RuntimePlatform中查看
Debug.Log("platform:" + Application.platform);
//当前游戏是否正在运行
Debug.Log("isPlaying:" + Application.isPlaying);
//当前游戏是否处于Unity编辑模式
Debug.Log("isEditor:" + Application.isEditor);
}
}