邻近感应灯概述 - MRTK3

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

Proximity light UI example

对于受 ProximityLight 影响的材料,必须使用“图形工具/标准”或“图形工具/标准画布”着色器,并且必须启用“邻近感应灯”属性。 “图形工具/非画布/前板”和“图形工具/画布/前板”也受 ProximityLight 的影响,但方式略有不同。

注意

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

高级用法

默认情况下,每次只有两个 ProximityLight 可以照亮一个材料。 如果项目需要两个以上的 ProximityLight 来影响材料,以下示例代码演示了如何针对“图形工具/标准”或“图形工具/标准画布”着色器实现该目的。

注意

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

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

// 1) Within GraphicsToolsStandardInput.hlsl change:

#define PROXIMITY_LIGHT_COUNT 2

// to:

#define PROXIMITY_LIGHT_COUNT 4

// 2) Within 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.

请参阅