悬停灯光概述 - MRTK3

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

Hover light example

对于受 HoverLight 影响的材料,必须使用“图形工具/标准”或“图形工具/标准画布”着色器,并且必须启用“悬停灯光”属性

注意

默认情况下,“图形工具/标准”或“图形工具/标准画布”着色器最多支持 2 个 HoverLight,但随着更多灯光添加到场景中,它将扩展为支持 4 个

高级用法

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

注意

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

如何将可用 HoverLight 的数量从 4 个增加到 10 个。

// 1) Within GraphicsToolsStandardInput.hlsl change:

#define HOVER_LIGHT_COUNT 4

// to:

#define HOVER_LIGHT_COUNT 10

// 2) Within HoverLight.cs change:

private const int hoverLightCount = 4;

// to:

private const int hoverLightCount = 10;

注意

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

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

另请参阅