深入了解Unity的Application类:一份详细的技术指南(二)

在 Unity 开发过程中,有时候我们需要获取或操作当前应用程序的信息,比如应用程序版本、运行环境、是否在前台运行等。Unity 提供了一个很强大的类,叫做 Application,可以帮助我们轻松获取这些信息。

Application 概述

Unity 的 Application 类提供了一种获取和操作当前应用程序信息的方法。这包括应用程序的标识符、版本、运行平台、数据路径等,还提供了退出应用程序等方法。它的所有属性和方法都是静态的,所以你不需要创建 Application 对象。

下面我们看一看 Application 类的重要属性和方法:

  1. 应用程序信息:
    identifier: 返回应用程序的包名或者 bundle identifier
    version: 返回应用程序的版本号
    unityVersion:返回当前运行的Unity版本号
    productName: 返回应用程序的产品名
    companyName:返回应用程序的公司名

identifier:

该属性返回应用程序的标识符,也就是PackageName包名。它可能会返回类似"com.company.game"这样的字符串,对于iOS和Android,这是一个唯一的字符串,用来标识应用在设备上的安装包。

string appId = Application.identifier;
Debug.Log(appId);  // 输出:com.company.game

version:

该属性返回应用程序的版本号,这就是你在发布应用程序时设置的版本号。

string appVersion = Application.version;
Debug.Log(appVersion);  // 输出:1.0.0

unityVersion:

这个只读属性返回当前运行的Unity版本号,该属性常用于检测Unity版本,以确定是否可以使用某些版本特有的功能

string unityVersion = Application.unityVersion;
Debug.Log(unityVersion);  // 输出示例:2023.1.0f1

productName:

该属性返回应用程序的产品名

string productName = Application.productName;
Debug.Log(productName);  // 输出:My Game

companyName:

该属性返回应用程序的公司名

string companyName = Application.companyName;
Debug.Log(companyName);  // 输出:My Company

  1. 运行环境相关:
    isEditor: 如果当前应用程序在 Unity 编辑器中运行,该值为true
    isFocused: 如果当前应用程序拥有焦点,该值为true
    isPlaying: 如果当前应用程序正在运行(非暂停或者退出),该值为true
    isMobilePlatform: 如果当前应用程序正在移动设备上运行,该值为true
    platform: 返回应用程序正在运行的平台

isEditor:

这个属性告诉你应用程序是否正在Unity编辑器中运行,这对于在编辑器和实际设备上分别进行不同的行为是有用的。

if (Application.isEditor) {
    
    
    Debug.Log("在编辑器中运行");
} else {
    
    
    Debug.Log("在实际设备上运行");
}

isFocused:

这个属性可以告诉你应用程序窗口是否拥有输入焦点。如果用户正在与你的应用程序互动,那么它就有焦点;如果用户切换到其他应用程序,那么你的应用程序就失去了焦点。

if (Application.isFocused) {
    
    
    Debug.Log("应用程序拥有焦点");
} else {
    
    
    Debug.Log("应用程序失去了焦点");
}

isPlaying:

这个属性告诉你应用程序是否正在运行。如果应用程序正在运行,那么这个值为true;如果应用程序被暂停或者已经退出,那么这个值为false。

if (Application.isPlaying) {
    
    
    Debug.Log("应用程序正在运行");
} else {
    
    
    Debug.Log("应用程序已暂停或退出");
}

isMobilePlatform:

这个属性可以告诉你应用程序是否正在移动设备上运行,比如Android或者iOS设备。

if (Application.isMobilePlatform) {
    
    
    Debug.Log("在移动设备上运行");
} else {
    
    
    Debug.Log("不在移动设备上运行");
}

platform:

这个属性返回应用程序正在运行的平台。这个值是一个枚举,值包括:WindowsPlayer、Android、IPhonePlayer等。

RuntimePlatform platform = Application.platform;
Debug.Log(platform);  // 输出:WindowsPlayer

  1. 数据路径相关:
    dataPath: 返回应用程序的数据路径,这个路径用来存储应用程序的数据。
    persistentDataPath: 返回一个持久化数据的路径,这个路径是应用程序可以安全地写入文件的地方。
    streamingAssetsPath: 返回一个 StreamingAssets 文件夹的路径。这个文件夹用于存储需要与应用程序一同分发的资源。
    temporaryCachePath:返回一个临时缓存的路径,这个路径用于存储临时的、可随时删除的文件。

dataPath:

这个属性返回应用程序的数据路径,这个路径用来存储应用程序的数据。例如,它可以用来找到你的应用程序的资源文件

string dataPath = Application.dataPath;
Debug.Log(dataPath);  // 输出:C:\Users\user\Documents\myGame\Assets

persistentDataPath:

这个属性返回一个持久化数据的路径,这个路径是应用程序可以安全地写入文件的地方,而且这些文件在应用程序更新或者卸载之后仍然存在

string persistentDataPath = Application.persistentDataPath;
Debug.Log(persistentDataPath);  // 输出:C:\Users\user\AppData\LocalLow\company\game

streamingAssetsPath:

这个属性返回一个StreamingAssets文件夹的路径。这个文件夹用于存储需要与应用程序一同分发的资源,例如音频、视频或文本文件

string streamingAssetsPath = Application.streamingAssetsPath;
Debug.Log(streamingAssetsPath);  // 输出:C:\Users\user\Documents\myGame\Assets\StreamingAssets

temporaryCachePath:

这个属性返回一个临时缓存的路径,这个路径用于存储临时的、可随时删除的文件。

string temporaryCachePath = Application.temporaryCachePath;
Debug.Log(temporaryCachePath);  // 输出:C:\Users\user\AppData\Local\Temp\company\game

  1. 应用程序操作相关:
    runInBackground: 如果设定为真,那么当应用程序失去焦点时它将继续运行;否则,它将暂停。
    Quit(): 它用于退出应用程序。
    LoadLevel(): 它用于加载应用程序的不同场景。目前已弃用该API
    targetFrameRate:这个属性可以设置或获取应用的目标帧率

runInBackground:

这个属性可以设置应用程序在失去焦点时是否继续运行(是否可以后台运行)。如果设置为真,那么当应用程序失去焦点时它将继续运行;否则,它将暂停。

Application.runInBackground = true;  // 应用程序在后台运行

Quit():

这个方法用于退出应用程序。请注意,在Unity编辑器中,这个方法并不会关闭编辑器。

Application.Quit();  // 退出应用程序

LoadLevel():

这个方法用于加载应用程序的不同场景。目前已弃用该API,改用SceneManager.LoadScene()

targetFrameRate:

这个属性可以设置或获取应用的目标帧率。当这个值为-1时,Unity会以尽可能快的速度刷新帧

Application.targetFrameRate = 60; // 将目标帧率设置为60

  1. 其他相关:
    systemLanguage:这个属性返回用户的操作系统的语言
    internetReachability: 这个属性返回设备的互联网可达性状态
    InstallMode: 这个属性返回应用是如何被安装到用户设备上的
    installerName:返回用于安装应用的程序名称
    OpenURL(string url): 这个方法会尝试用系统默认的浏览器打开指定的url
    RequestAdvertisingIdentifierAsync(): 这个方法异步地请求广告标识符

systemLanguage:

这个属性返回用户的操作系统的语言。这可以用于自动设置游戏的语言

SystemLanguage language = Application.systemLanguage;
Debug.Log(language);  // 输出:English

internetReachability:

这个属性返回设备的互联网状态。它可以告诉你设备是否连接到互联网,以及设备是通过WIFI还是移动数据连接的

NetworkReachability reachability = Application.internetReachability;
Debug.Log(reachability);  // 输出:ReachableViaWiFi

InstallMode:

这个属性返回应用是如何被安装到用户设备上的。它返回一个枚举值,这个值可能是Unknown,Store或者DeveloperBuild

ApplicationInstallMode installMode = Application.installMode;
Debug.Log(installMode);  // 输出:Store

installerName:

这个只读属性返回用于安装应用的程序名称,这主要用于特定的分发渠道

string installerName = Application.installerName;
Debug.Log(installerName);  // 输出示例:Google Play

OpenURL(string url):

这个方法会尝试用系统默认的浏览器打开指定的url

Application.OpenURL("https://www.XXX.com");

RequestAdvertisingIdentifierAsync():

这个方法异步地请求广告标识符。广告标识符是一个字符串,它可以用来为设备展示定向广告

StartCoroutine(GetAdId());

IEnumerator GetAdId()
{
    
    
    yield return Application.RequestAdvertisingIdentifierAsync(
        (string advertisingId, bool trackingEnabled, string error) =>
        {
    
    
            Debug.Log("advertisingId:" + advertisingId + " " + "trackingEnabled:" + trackingEnabled + " " + error);
        }
    );
}

  1. 比较少用的:
    absoluteURL: 返回应用程序的绝对URL
    SetBuildTags(string[] buildTags):此静态方法可以设置构建的标签
    GetBuildTags(): 此静态方法返回一个字符串数组,其中包含构建的标签
    GetStackTraceLogType(LogType logType) :获取指定类型日志的堆栈跟踪记录方式。
    SetStackTraceLogType(LogType logType, StackTraceLogType stackTraceType): 设置指定类型日志的堆栈跟踪记录方式。

absoluteURL:

这是一个只读属性,返回应用程序的绝对URL,用于网页播放器。对于WebGL构建的游戏,此属性可以帮助你获取游戏当前的URL地址。

string absoluteURL = Application.absoluteURL;
Debug.Log(absoluteURL);  // 输出示例:http://www.XXX.com/mygame

SetBuildTags(string[] buildTags):

此静态方法可以设置构建的标签。构建标签是在构建过程中为应用程序设置的标签,可以用于识别或过滤构建。例如,你可能使用构建标签来区分开发和生产,或者区分地区或内容的不同版本。

string[] buildTags = new string[] {
    
    "tag1", "tag2", "tag3"};
Application.SetBuildTags(buildTags);

注意,SetBuildTags方法通常在编辑器脚本中使用,而不是游戏运行时的代码中使用,因为在运行时改变构建标签可能没有实际效果。
 

GetBuildTags():

此静态方法返回一个字符串数组,其中包含构建的标签。构建标签是在构建过程中为应用程序设置的标签,可以用于识别或过滤构建。例如,您可能使用构建标签来区分开发和生产,或者区分地区或内容的不同版本。

string[] buildTags = Application.GetBuildTags();
foreach (string tag in buildTags)
{
    
    
    Debug.Log(tag);
}

此代码将在Unity控制台中打印出应用程序的所有构建标签
 

GetStackTraceLogType(LogType logType)和 SetStackTraceLogType(LogType logType, StackTraceLogType stackTraceType):

这两个方法获取和设置指定类型的日志的堆栈跟踪记录方式。

// 获取当前LogType.Error的堆栈跟踪记录方式
StackTraceLogType currentStackTraceLogType = Application.GetStackTraceLogType(LogType.Error);
Debug.Log(currentStackTraceLogType);  // 输出示例:ScriptOnly

// 设置LogType.Error的堆栈跟踪记录方式为全堆栈跟踪
Application.SetStackTraceLogType(LogType.Error, StackTraceLogType.Full);

以上就是Unity的Application类的属性和方法,有些属性或方法已经弃用了,这里就不一一讲解了。这个类可以帮助你在开发过程中更好地了解和控制你的应用程序。希望这个深入解析和用法分析能对你有所帮助。

猜你喜欢

转载自blog.csdn.net/qq_33795300/article/details/131364030
今日推荐