Mauszeiger Licht – MRTK2

Ein HoverLight ist ein Paradigma des Fluent Design System, das ein Punktlicht imitiert, das in der Nähe der Oberfläche eines Objekts schwebt. Es wird oftmals für Ferninteraktionen verwendet, und die Anwendung kann die Eigenschaften eines Schwebelichts mithilfe der HoverLight-Komponente steuern.

Für ein Material, das von einem HoverLightMixed Reality Toolkit/Standard-Shader beeinflusst werden soll, muss verwendet werden, und die Hover Light-Eigenschaft muss aktiviert sein.

Hinweis

Der MRTK/Standard-Shader unterstützt standardmäßig bis zu zwei HoverLights , wird jedoch skaliert, um vier zu unterstützen, und dann zehn, da mehr Lichter der Szene hinzugefügt werden.

Beispiele

Die meisten Szenen innerhalb des MRTK nutzen eine HoverLight. Der häufigste Einsatzfall finden Sie im MRTK/SDK/Features/UX/Prefabs/Cursors/DefaultCursor.prefab

Die HoverLightExamples-Szene zeigt auch die Verwendung von HoverLight Verhalten und finden Sie unter: MRTK/Examples/Demos/StandardShader/Scenes/

Erweiterte Nutzung

Nur zehn HoverLights können ein Material gleichzeitig beleuchten. Wenn Ihr Projekt mehr als zehn HoverLights benötigt, um ein Material zu beeinflussen, zeigt der nachstehende Beispielcode, wie dies erreicht wird.

Hinweis

Wenn viele HoverLightsMaterialien belichten, erhöht sich die Pixel-Shaderanweisungen und wirkt sich auf die Leistung aus. Erstellen Sie ein Profil für diese Änderungen in Ihrem Projekt.

So wird die Anzahl der Verfügbaren HoverLights von zehn auf zwölf erhöht.

// 1) Within MRTK/Core/StandardAssets/Shaders/MixedRealityStandard.shader change:

#if defined(_HOVER_LIGHT_HIGH)
#define HOVER_LIGHT_COUNT 10

// to:

#if defined(_HOVER_LIGHT_HIGH)
#define HOVER_LIGHT_COUNT 12

// 2) Within MRTK/Core/Utilities/StandardShader/HoverLight.cs change:

private const int hoverLightCountHigh = 10;

// to:

private const int hoverLightCountHigh = 12;

Hinweis

Wenn Unity eine Warnung wie unten protokolliert, müssen Sie Unity neu starten, damit Ihre Änderungen wirksam werden.

Property (_HoverLightData) exceeds previous array size (24 vs 20). Cap to previous >size.

Weitere Informationen