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

来源:互联网 发布:淘宝点击客服没反应 编辑:程序博客网 时间:2024/06/10 21:03

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();    }}

运行结果:

这里写图片描述

阅读全文
0 0
原创粉丝点击