In Unity gibt es mehrere voreingestellte Qualitätsstufen, die du in deinem Projekt verwenden kannst. Diese Stufen ermöglichen es, die Grafikeinstellungen an verschiedene Hardware-Spezifikationen anzupassen. Du kannst zwischen den Qualitätsstufen und den zugehörigen URP-Assets zur Laufzeit wechseln und spezifische Einstellungen im URP-Asset ändern. In diesem Artikel zeigen wir dir, wie du die API verwendest, um die Qualitätseinstellungen und das aktive URP-Asset zu ändern und spezifische Einstellungen im URP-Asset zur Laufzeit anzupassen.
Ändern des URP-Assets zur Laufzeit
Jede Qualitätsstufe verwendet ein URP-Asset, um viele der spezifischen Grafikeinstellungen zu steuern. Du kannst jedem Qualitätslevel ein anderes URP-Asset zuweisen und zur Laufzeit zwischen ihnen wechseln.
Um die Qualitätseinstellungen zu verwenden, um zwischen URP-Assets zu wechseln, stelle sicher, dass die Qualitätsstufen deines Projekts so konfiguriert sind, dass sie verschiedene URP-Assets verwenden. Du kannst für jede Qualitätsstufe ein URP-Asset erstellen, indem du mit der rechten Maustaste im Projektfenster klickst und "Erstellen > Rendering > URP Asset (mit Universal Renderer)" auswählst. Weise dann jedem URP-Asset eine Qualitätsstufe zu, indem du in den Projekteinstellungen den Abschnitt "Quality" öffnest und das entsprechende URP-Asset für jede Qualitätsstufe auswählst.
Jetzt kannst du zur Laufzeit das URP-Asset ändern, indem du die QualitySettings-API verwendest. Im folgenden Beispiel wird gezeigt, wie du die Qualitätseinstellung basierend auf dem verfügbaren Grafikspeicher des Systems änderst:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class QualityControls : MonoBehaviour
{
void Start()
{
SwitchQualityLevel();
}
private void SwitchQualityLevel()
{
switch (SystemInfo.graphicsMemorySize)
{
case <= 2048:
QualitySettings.SetQualityLevel(1);
break;
case <= 4096:
QualitySettings.SetQualityLevel(2);
break;
default:
QualitySettings.SetQualityLevel(0);
break;
}
}
}
In diesem Beispiel wird die Methode SwitchQualityLevel
verwendet, um die Qualitätseinstellung basierend auf der Größe des Grafikspeichers des Systems festzulegen. Du kannst diese Methode anpassen, um die Qualitätseinstellung entsprechend deinen Anforderungen zu ändern.
Ändern der URP-Asset-Einstellungen zur Laufzeit
Du kannst auch einige Eigenschaften des URP-Assets zur Laufzeit mit C#-Skripten ändern, um die Leistung auf Geräten mit Hardware anzupassen, die nicht perfekt zu den Qualitätsstufen in deinem Projekt passt.
Um eine Eigenschaft des URP-Assets mit einem C#-Skript zu ändern, muss die Eigenschaft eine Set-Methode haben. Im folgenden Beispiel wird gezeigt, wie du die Eigenschaften des URP-Assets basierend auf der Größe des Grafikspeichers des Systems änderst:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
public class QualityController : MonoBehaviour
{
void Start()
{
SwitchQualityLevel();
ChangeAssetProperties();
}
private void SwitchQualityLevel()
{
// Code aus vorherigem Beispiel
}
private void ChangeAssetProperties()
{
UniversalRenderPipelineAsset data = GraphicsSettings.currentRenderPipeline as UniversalRenderPipelineAsset;
if (!data)
return;
switch (SystemInfo.graphicsMemorySize)
{
case <= 1024:
data.renderScale = 0.7f;
data.shadowDistance = 50.0f;
break;
case <= 3072:
data.renderScale = 0.9f;
data.shadowDistance = 150.0f;
break;
default:
data.renderScale = 0.7f;
data.shadowDistance = 25.0f;
break;
}
}
}
In diesem Beispiel wird die Methode ChangeAssetProperties
verwendet, um einige Eigenschaften des URP-Assets basierend auf der Größe des Grafikspeichers des Systems anzupassen. Du kannst diese Methode anpassen, um die Eigenschaften des URP-Assets entsprechend deinen Anforderungen zu ändern.
Fazit
In diesem Artikel haben wir gezeigt, wie du die Qualitätseinstellungen und das URP-Asset zur Laufzeit in Unity ändern kannst. Durch die Verwendung der QualitySettings-API und C#-Skripten kannst du die Grafikeinstellungen an verschiedene Hardware-Spezifikationen anpassen und die Leistung deines Projekts optimieren. Indem du die Qualitätseinstellungen und das URP-Asset zur Laufzeit änderst, kannst du eine bessere Benutzererfahrung auf verschiedenen Geräten bieten.