邻近感应光 - MRTK2

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

为了使材料受 ProximityLight混合现实 Toolkit/Standard 着色器的影响,并且必须启用邻近光属性。

注意

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

示例

MRTK 中的大多数场景都使用 a 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.

请参阅