Application类不含实例属性和实例方法,在脚本中通过直接调用Application类的静态属性和静态方法来控制程序的运行时数据,如场景的管理,数据的加载等。
Application类静态属性
1.dataPath属性:数据文件路径
基本语法
public static string dataPath{ get; }
功能说明
返回程序的数据文件所在文件夹的路径(只读).返回路径为相对路径,不同游戏平台的数据文件保存路径不同,具体如下所示:
Unity 编辑器:<工程文件夹的路径>/Assets
Mac播放器:<到播放器应用的路径>/Contents
iPhone播放器:<到播放器应用的路径>/<AppName.app>/Data
Win播放器:< 包含可执行播发器的文件夹的路径>\Data
Dasboard窗口:< dashboard widget bundle的路径>
网络播放器:到播放器数据文件夹的绝对路径(没有实际的数据文件名称)
相似属性
persistentDataPath:返回一个持久化数据存储目录的路径(只读),可以在此路径下存储一些持久化的数据文件。对于同一平台,在不同程序中调用此属性时,其返回值是相同的,但在不同的运行平台下,其返回值是不一样的.
streamingAassetsPath: 此属性用于返回流数据的缓存目录,返回路径为相对路径,适合设置一些外部数据文件的路径。
temporaryCachePath: 此属性用于返回一个临时数据的缓存目录(只读).对于同一平台,在不同程序中调用此属性时,其返回值是相同的,但在不同的运行平台下,其返回值是不一样的。
实例演示
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DataPath_ts : MonoBehaviour {
void Start () {
//dataPath和streamingAssetsPath的路径位置一般都是相对程序的安装目录位置
//persistentDataPath和temporaryCachePath的路径位置一般是相对所在系统的固定位置
Debug.Log ("dataPath:"+Application.dataPath);
Debug.Log ("persistentDataPath:"+Application.persistentDataPath);
Debug.Log ("streamingAssetsPath:"+Application.streamingAssetsPath);
Debug.Log ("temporaryCachePath:"+Application.temporaryCachePath);
}
}
运行结果:
2.loadedLevel属性:关卡索引
基本语法
public static int loadedLevel{ get; }
功能说明
返回当前程序最后加载的关卡索引(只读),关卡也就是一个独立的场景。
实例演示
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LoadedLevel_ts : MonoBehaviour {
void Start () {
//返回当前场景的索引值
Debug.Log ("前场景的索引值 loadedLevel:"+Application.loadedLevel);
//返回当前场景的名字
Debug.Log("当前场景的名字oadedLevelName:"+Application.loadedLevelName);
/*是否有场景正在被加载,在使用静态方法LoadLevel或LoadLevelAdditive加载一个新场景时
常常需要一段时间才能加载完毕,当场景加载完毕时isLoadingLevel返回true,否则返回false
*/
Debug.Log ("是否正在加载场景isLoadingLevel:"+Application.isLoadingLevel);
//返回游戏中可被加载的场景数量
Debug.Log ("可被加载的场景数量levelCount:"+Application.levelCount);
//返回当前运行的平台
Debug.Log("当前运行的平台platform:"+Application.platform);
//当前游戏是否正在运行
Debug.Log("游戏是否正在运行isPlaying:"+Application.isPlaying);
//当前游戏是否处于Unity编辑模式
Debug.Log("是否处于Unity编辑模式isEditor:"+Application.isEditor);
//游戏是否后台运行
Application.runInBackground=true;
}
}
运行结果:
Application类静态方法
1.CaptureScreenshot方法 : 截屏
基本语法
public static void CaptureScreenshot(string filename);
public static void CaptureScreenshot(string filename, int superSize);
参数filename 截屏文件名称 superSize放大系数,默认为0,即不放大。
功能说明
此方法截取当前游戏画面并保存为PNG格式,文件默认保存在根目录下,若有重名文件则替换。
当superSize大于1时,截屏文件的宽度和高度同时被放大superSize倍。
当superSize小于0时,按默认值处理,即图片不放大也不缩小。
此方法在Web模式下无效。
实例演示
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CaptureScreenshot_ts : MonoBehaviour {
int tp=-1;
void Update () {
if (tp == 0) {
Application.CaptureScreenshot ("test01.png",0);
} else if (tp == 1) {
Application.CaptureScreenshot ("test02.png",1);
} else {
Application.CaptureScreenshot ("test03.png",2);
}
tp++;
}
}
运行结果:
2.LoadLevelAdditiveAsync方法 : 异步加载关卡
基本语法
public static AsynvOperation LoadLevelAdditiveAsync(int index);//index参数关卡索引值
public static AsynvOperation LoadLevelAdditiveAsync(string levelName);//levelName参数关卡名称
功能说明
此方法用于按照关卡名字在后台异步加载关卡到当前场景中,此方法只是将新关卡加载到当前场景,当前场景的原有内容不会被销毁.
实例演示
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LoadLevelAdditiveAsync_ts : MonoBehaviour {
IEnumerator Start() {
AsyncOperation async = Application.LoadLevelAdditiveAsync("GameScrene");
//异步加载中
Debug.Log("1.是否加载完成:"+async.isDone);
Debug.Log("2.加载进度:"+async.progress);
yield return async;
//加载完成后
Debug.Log("3.是否加载完成:"+async.isDone);
Debug.Log("4.加载进度:"+async.progress);
}
}
运行结果:
当前场景main
加载场景GameScrene
运行游戏后的场景
3.RegisterLogCallback方法 :注册委托
基本语法
public static void RegisterLogCallback(Application.LogCallback handler);参数是委托的名字
功能说明
此方法用于注册一个委托来调用日志信息
在开发的过程中,为了防止游戏运行产生异常信息,可以借助unity为我们提供的log回调方法,判断运行过程中是否产生意外状况,比如游戏运行过程中产生一些异常错误,我们可以通过该方法,对异常进行处理,或者产生一个弹框,告诉玩家游戏产生异常,需要重新登录或者其他的相关操作。
实例演示
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RegisterLogCallback_ts : MonoBehaviour {
string output="";//日志输入信息
string stack="";//堆栈跟踪信息
string logType="";//日志类型
int tp=0;
void Update () {
Debug.Log ("output:"+output);
Debug.Log ("stack:"+stack);
Debug.Log ("logType:"+logType);
Debug.Log ("tp:"+(tp++));
}
void OnEnable()
{
//注册委托
Application.RegisterLogCallback (MyCallback);
}
void OnDisable()
{
//取消委托
Application.RegisterLogCallback (null);
}
//委托方法
void MyCallback(string logString ,string stackTrace,LogType type)
{
output = logString;
stack = stackTrace;
logType = type.ToString();
}
}
运行结果:
添加Unity API小程序,了解更多API用法。