Unity 6.3
0 онлайн 104 гостей 3 в системе
Вход
Освещение Шаг 21 из 173

Настройка Light Explorer

Расширение Light Explorer позволяет создать собственную версию Light Explorer. Окно Light Explorer. Вы можете использовать это, чтобы адаптировать функциональность окна Light Explorer, так что он работает с пользовательским Scriptable Render Pipeline (SRP), или с High Definition Render PipelineТаможенная пошлина огни.

Окно Обзора Света позволяет вам видеть все Света в вашем Scene и изменять их свойства. С помощью этого расширения вы можете расширить текущее окно несколькими способами. Например, вы можете:

  • Изменение вкладок, от простого изменения названия вкладки до добавления собственных пользовательских вкладок, отображающих списки различных типов GameObject. Это полезно, если вы хотите отобразить информацию о свойствах для своих собственных пользовательских Reflection Probes, например.
  • Изменение столбцов на вкладке, опять же от изменения названия до добавления собственных столбцов. Добавление столбцов полезно, если вы хотите просмотреть дополнительные свойства Light.

Расширение Light Explorer

Чтобы расширить Light Explorer, вы можете либо наследовать от:

  • ILightingExplorerExtension интерфейс и переопределите GetContentTabs метод.
  • DefaultLightingExplorerExtension класс, который наследуется от ILightingExplorerExtension. Этот класс предоставляет всё содержимое, которое уже есть в окне. Используйте его, если хотите переопределить только количество вкладок, их заголовки или набор отображаемых источников света. Как расширить Light Explorer таким способом, показано в примере ниже.

Пример кода

Примеры в этом разделе показывают, как расширить стандартный класс Light Explorer так, чтобы для источников света отображался только столбец Name, и изменить количество вкладок. В собственной реализации вы можете переопределить сколько угодно методов — хоть все, хоть один.

В следующем примере показан только столбец с именем для Lights:

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
        };
    }
}

В следующем примере показано только имя и статус включения для Lights и скрыта вкладка Emissive Materials (отображаются только 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),
        };
    }
}

Полезные классы и методы

Вот список классов и методов, которые можно использовать для расширения Light Explorer:

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