悬停灯光 — MRTK2

HoverLight 是一种 Fluent Design System 范式,它模拟悬停在对象表面附近的点光源。 悬停灯光通常用于远距交互。应用程序可以通过 HoverLight 组件控制悬停灯光的属性。

对于受 HoverLight 影响的材料,必须使用“混合现实工具包/标准”着色器,并且必须启用“悬停灯光”属性

注意

默认情况下,MRTK/标准着色器最多支持 2 个 HoverLights,但随着更多灯光添加到场景中,它将扩展为支持 4 个和 10 个。

示例

MRTK 中的大多数场景都利用 HoverLight。 最常见的用例可以在 MRTK/SDK/Features/UX/Prefabs/Cursors/DefaultCursor.prefab 中找到

HoverLightExamples 场景还演示了 HoverLight 行为的用法,该场景可在以下位置找到:MRTK/Examples/Demos/StandardShader/Scenes/

高级用法

每次只有 10 个 HoverLights 可以照亮一个材料。 如果你的项目需要 10 个以上的 HoverLights 来影响材料,以下示例代码演示了如何做到这一点。

注意

使用许多 HoverLights 来照亮材料会增加像素着色器指令并影响性能。 请在项目中分析这些更改

如何将可用 HoverLights 的数量从 10 个增加到 12 个

// 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;

注意

如果 Unity 记录类似于以下警告,则必须重启 Unity,然后更改才会生效。

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

另请参阅

  • MRTK 标准着色器