邻近感应灯 - MRTK2

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

对于受 ProximityLight 影响的材料,必须使用“混合现实工具包/标准”着色器,并且必须启用“邻近感应灯”属性

注意

默认情况下,最多支持两个 ProximityLights

示例

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

高级用法

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

注意

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

如何将可用 ProximityLights 的数量从 2 个增加到 4 个

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

#define PROXIMITY_LIGHT_COUNT 2

// to:

#define PROXIMITY_LIGHT_COUNT 4

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

private const int proximityLightCount = 2;

// to:

private const int proximityLightCount = 4;

注意

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

Property (_ProximityLightData) exceeds previous array size (24 vs 12). Cap to previous size.

另请参阅

  • MRTK 标准着色器