Unity API 解析 (一)Application类静态属性及方法

本文介绍了Unity的Application类,包括其数据路径属性dataPath、关卡索引loadedLevel,以及CaptureScreenshot截屏方法、LoadLevelAdditiveAsync异步加载关卡和RegisterLogCallback注册日志回调的方法。通过示例演示了这些功能的使用,帮助开发者更好地理解和应用Unity API。

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用法。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值