Version: 2023.1
言語: 日本語
Light Explorer ウィンドウ
ライトマッピング

Light Explorer 拡張

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();

  • 2019–08–13 公開ページ
  • Light Explorer 拡張は 2018.3 で追加NewIn20183
Light Explorer ウィンドウ
ライトマッピング