Unity 6.3
0 онлайн 89 гостей 3 в системе
Вход

OverlayCanvas.Add(Overlay,bool)

Параметры

Параметр Описание
накладка Оверлей для добавления.
показать True для немедленного отображения Overlay, false для добавления без отображения.

Описание

Добавьте Overlay на это полотно. Добавленные накладки будут отображаться в соответствующих EditorWindow до тех пор, пока они не будут удалены.

В большинстве случаев Overlays создаются автоматически с помощью OverlayAttribute. Однако Overlays также можно напрямую добавлять в OverlayCanvas и удалять из него. Это полезно для недолговечных Overlays, которым нужен определённый контекст, например как расширение Editor.

Overlays, добавленные этим методом, должны реализовывать ITransientOverlay. Объект Overlay может принадлежать только одному OverlayCanvas. Чтобы отобразить Overlay в нескольких окнах, нужно создать отдельный экземпляр Overlay для каждого окна.

using UnityEditor;
using UnityEngine;
using UnityEditor.Overlays;
using UnityEngine.UIElements;

// Attach this MonoBehaviour to a GameObject to view the example Overlay in the last active Scene View class OverlayCanvasExample : MonoBehaviour {}

// An Editor for our OverlayCanvasExample MonoBehaviour. This will show and hide the example Overlay when a GameObject // with the OverlayCanvasExample component is selected and deselected. [CustomEditor(typeof(OverlayCanvasExample))] class OverlayCanvasExampleEditor : UnityEditor.Editor { ExampleEditorOverlay m_Overlay;

void OnEnable() { // Create a new Overlay with a label indicating the selected GameObject name. m_Overlay = new ExampleEditorOverlay(name); SceneView.lastActiveSceneView.overlayCanvas.Add(m_Overlay); }

void OnDisable() { // If the Overlay has not already been closed, close it when this editor is disabled. Added Overlays will // persist until they are closed. m_Overlay?.Close(); } }

class ExampleEditorOverlay : Overlay, ITransientOverlay { // Overlays added directly to the canvas must implement ITransientOverlay, meaning they control their own lifecycle. public bool visible => true;

string m_Message;

public ExampleEditorOverlay(string message) { m_Message = message; }

public override VisualElement CreatePanelContent() { var root = new VisualElement(); root.Add(new Label(m_Message)); root.Add(new Button(Close) { text = "Close" }); return root; } }