版本:Unity 6 (6000.0)
语言:English
灯光资源管理器窗口
从环境中添加环境光

自定义灯光资源管理器

灯光资源管理器扩展允许您创建自己的 灯光资源管理器窗口 版本。您可以使用它来调整灯光资源管理器窗口的功能,使其与自定义的可脚本化 渲染管线一系列操作,用于获取场景内容并在屏幕上显示。Unity 允许您选择预构建的渲染管线或编写自己的渲染管线。 更多信息
参见 术语表
(SRP) 或 高清渲染管线 的自定义 灯光 一起使用。

灯光资源管理器窗口允许您查看 场景场景包含游戏环境和菜单。可以将每个唯一的场景文件视为一个唯一的关卡。在每个场景中,您放置环境、障碍物和装饰,本质上是分段设计和构建您的游戏。 更多信息
参见 术语表
中的每个 灯光 并编辑其属性。使用此扩展,您可以通过多种方式扩展当前窗口。例如,您可以

  • 更改选项卡,从简单地更改选项卡名称到添加您自己的自定义选项卡,这些选项卡显示不同类型的 游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路径点等。游戏对象的用途由附加到它的组件定义。 更多信息
    参见 术语表
    列表。如果您想显示自己的自定义 反射探头一个渲染组件,它以所有方向捕获其周围环境的球形视图,就像相机一样。然后,捕获的图像将存储为立方体贴图,可供具有反射材质的对象使用。 更多信息
    参见 术语表
    的属性信息,这将非常有用。
  • 更改选项卡上的列,同样是从更改名称到添加您自己的自定义列。如果您想查看额外的灯光属性,添加列将非常有用。

扩展灯光资源管理器

要扩展灯光资源管理器,您可以从

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

  • 2019 年 8 月 13 日 页面发布
  • 灯光资源管理器扩展在 2018.3 中添加 NewIn20183
灯光资源管理器窗口
从环境中添加环境光