邻近感应灯 - 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.