您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

77 行
2.4 KiB

using System.Collections.Generic;
using UnityEngine;
#pragma warning disable 0414
#pragma warning disable 0219
namespace UnityEditor.Experimental.Graph.Examples
{
internal class IMGUICanvas2D : EditorWindow
{
[MenuItem("Window/Canvas2D/IMGUI Coexistence Example")]
public static void ShowWindow()
{
GetWindow(typeof(IMGUICanvas2D));
}
private Canvas2D m_Canvas = null;
private EditorWindow m_HostWindow = null;
private List<CanvasElement> m_Data = new List<CanvasElement>();
public void AddElement(CanvasElement e)
{
m_Data.Add(e);
m_Canvas.ReloadData();
var scaling = e.scale;
}
private void InitializeCanvas()
{
if (m_Canvas == null)
{
m_Canvas = new Canvas2D(this, m_HostWindow, new IMGUIDataSource(m_Data));
// draggable manipulator allows to move the canvas around. Note that individual elements can have the draggable manipulator on themselves
m_Canvas.AddManipulator(new Draggable(2, EventModifiers.None));
m_Canvas.AddManipulator(new Draggable(0, EventModifiers.Alt));
// make the canvas zoomable
m_Canvas.AddManipulator(new Zoomable());
// allow framing the selection when hitting "F" (frame) or "A" (all). Basically shows how to trap a key and work with the canvas selection
m_Canvas.AddManipulator(new Frame(Frame.FrameType.All));
m_Canvas.AddManipulator(new Frame(Frame.FrameType.Selection));
// The following manipulator show how to work with canvas2d overlay and background rendering
m_Canvas.AddManipulator(new RectangleSelect());
m_Canvas.AddManipulator(new ScreenSpaceGrid());
AddElement(new IMGUIExampleWidget(new Vector2(0.0f, 250.0f), 300.0f));
}
Rebuild();
}
private void Rebuild()
{
if (m_Canvas == null)
return;
m_Canvas.Clear();
m_Canvas.ReloadData();
m_Canvas.ZSort();
}
void OnGUI()
{
m_HostWindow = this;
if (m_Canvas == null)
{
InitializeCanvas();
}
m_Canvas.OnGUI(this, new Rect(0, 0, position.width, position.height));
}
}
}