Light Explorer 拡張を使用すると、独自のバージョンの ライトエクスプローラーウィンドウ を作成できます。これを使用して、ライトエクスプローラーウィンドウの機能を調整し、カスタムのスクリプタブルレンダーパイプライン (SRP) や、HD レンダーパイプライン のカスタムの ライト で使用できます。
Light Explorer ウィンドウでは、シーン内のすべての ライト を表示し、それらのプロパティを編集できます。この拡張を使用すると、現在のウィンドウを複数の方法で拡張できます。例えば、以下が可能です。
ライトエクスプローラーを拡張するには、以下のいずれかを行います。
ILightingExplorerExtension
インターフェースを継承し GetContentTabs
メソッドをオーバーライドします。ILightingExplorerExtension
から継承した DefaultLightingExplorerExtension
クラスを継承します。このクラスは、すでにウィンドウにあるすべてのコンテンツを提供します。これは、タブの数、各タブの名前、表示するライトをオーバーライドしたい場合に使用します。ライトエクスプローラーの拡張方法については、以下の例を参照してください。ここにある例は、デフォルトの Light Explorer クラスを拡張して、ライトの Name 列のみを表示したりタブ数を変更する方法を示しています。独自の実装では、必要な数のメソッドをオーバーライドできます。
下の例では、ライトの Name 列のみを表示します。
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
};
}
}
下の例では、ライトの名前と有効な使用ステータスのみを表示し、Emissive Materials タブを非表示にします (4 つではなく 3 つのタブのみを表示)。
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 (inherit from 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();