灯光资源管理器扩展允许您创建自己的 灯光资源管理器窗口 版本。您可以使用它来调整灯光资源管理器窗口的功能,使其与自定义的可脚本化 渲染管线一系列操作,用于获取场景内容并在屏幕上显示。Unity 允许您选择预构建的渲染管线或编写自己的渲染管线。 更多信息
参见 术语表 (SRP) 或 高清渲染管线 的自定义 灯光 一起使用。
灯光资源管理器窗口允许您查看 场景场景包含游戏环境和菜单。可以将每个唯一的场景文件视为一个唯一的关卡。在每个场景中,您放置环境、障碍物和装饰,本质上是分段设计和构建您的游戏。 更多信息
参见 术语表 中的每个 灯光 并编辑其属性。使用此扩展,您可以通过多种方式扩展当前窗口。例如,您可以
要扩展灯光资源管理器,您可以从
ILightingExplorerExtension
接口继承并覆盖 GetContentTabs
方法。DefaultLightingExplorerExtension
类继承,该类从 ILightingExplorerExtension
继承。此类为您提供了窗口中已有的所有内容。如果您只想覆盖选项卡数量、每个选项卡的标题或要显示的灯光,请使用此方法。要了解如何通过这种方式扩展灯光资源管理器,请参阅下面的示例。本节中的示例向您展示了如何扩展默认的灯光资源管理器类,以仅显示灯光的“名称”列,并更改选项卡数量。在您自己的实现中,您可以覆盖任意数量的方法。
以下示例仅显示灯光的名称列
using UnityEngine;
using UnityEngine.Rendering;
using UnityEditor;
[SupportedOnRenderPipeline(typeof(ExampleRenderPipelineAsset))]
public class SimpleExplorerExtension : DefaultLightingExplorerExtension
{
private static class Styles
{
public static readonly GUIContent Name = EditorGUIUtility.TrTextContent("Name");
}
protected override LightingExplorerTableColumn[] GetLightColumns()
{
return new[]
{
new LightingExplorerTableColumn(LightingExplorerTableColumn.DataType.Name, Styles.Name, null, 200), // 0: Name
};
}
}
以下示例仅显示灯光的名称和启用状态,并隐藏“发射材质”选项卡(仅显示 3 个选项卡而不是 4 个)
using UnityEngine;
using UnityEngine.Rendering;
using UnityEditor;
[SupportedOnRenderPipeline(typeof(ExampleRenderPipelineAsset))]
public class ComplexLightExplorerExtension : DefaultLightingExplorerExtension
{
private static class Styles
{
public static readonly GUIContent Name = EditorGUIUtility.TrTextContent("Name");
public static readonly GUIContent Enabled = EditorGUIUtility.TrTextContent("Enabled");
}
protected override UnityEngine.Object[] GetLights()
{
return Resources.FindObjectsOfTypeAll<Light>();
}
protected override LightingExplorerTableColumn[] GetLightColumns()
{
return new[]
{
new LightingExplorerTableColumn(LightingExplorerTableColumn.DataType.Name, Styles.Name, null, 200), // 0: Name
new LightingExplorerTableColumn(LightingExplorerTableColumn.DataType.Checkbox, Styles.Enabled, "m_Enabled", 25), // 1: Enabled
};
}
public override LightingExplorerTab[] GetContentTabs()
{
return new[]
{
new LightingExplorerTab("Lights", GetLights, GetLightColumns, true),
new LightingExplorerTab("2D Lights", Get2DLights, Get2DLightColumns, true),
new LightingExplorerTab("Reflection Probes", GetReflectionProbes, GetReflectionProbeColumns, true),
new LightingExplorerTab("Light Probes", GetLightProbes, GetLightProbeColumns, true),
new LightingExplorerTab("Static Emissives", GetEmissives, GetEmissivesColumns, false),
};
}
}
以下列出了可用于扩展灯光资源管理器的类和方法
ILightingExplorerExtension
public virtual LightingExplorerTab[] GetContentTabs();
public virtual void OnEnable() {}
public virtual void OnDisable() {}
DefaultLightingExplorerExtension(从 ILightingExplorerExtension 继承)
public virtual LightingExplorerTab[] GetContentTabs();
public virtual void OnEnable() {}
public virtual void OnDisable() {}
protected virtual UnityEngine.Object[] GetLights();
protected virtual LightingExplorerTableColumn[] GetLightColumns();
protected virtual UnityEngine.Object[] GetReflectionProbes();
protected virtual LightingExplorerTableColumn[] GetReflectionProbeColumns();
protected virtual UnityEngine.Object[] GetLightProbes();
protected virtual LightingExplorerTableColumn[] GetLightProbeColumns();
protected virtual UnityEngine.Object[] GetEmissives();
protected virtual LightingExplorerTableColumn[] GetEmissivesColumns();