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

Editor.OnSceneGUI()

Описание

Позволяет Редактору обрабатывать событие в представлении Scene.

В течение OnSceneGUI вы можете, например, редактировать меши, рисовать местность, или иметь продвинутые гаджеты. См. Handles класс — методы, связанные с отрисовкой интерактивной графики в SceneView.

Если вы хотите рисовать элементы в представлении Scene, например, используя `Graphics.DrawMeshNow`, делайте это только во время EventType.Repaint.

В следующих двух скриптах, OnSceneGUI используется для рисования линий между GameObjects. Первый скрипт показывает, как OnSceneGUI В этом скрипте GameObject используется в качестве родительского объекта. Скрипт получает позицию родительского объекта, а затем рисует строки от этой позиции до GameObjects, хранящегося в массиве. Скрипт использует Handles.DrawLine Документация по проектированию Handles.DrawLine имеет очень похожий пример.

using UnityEngine;
using UnityEditor;

[CustomEditor( typeof( DrawLine ) )] public class DrawLineEditor : Editor { // Draw lines between a chosen GameObject // and a selection of added GameObjects

void OnSceneGUI() { // Get the chosen GameObject DrawLine t = target as DrawLine;

if( t == null || t.GameObjects == null ) return;

// Grab the center of the parent Vector3 center = t.transform.position;

// Iterate over GameObject added to the array... for( int i = 0; i < t.GameObjects.Length; i++ ) { // ... and draw a line between them if( t.GameObjects[i] != null ) Handles.DrawLine( center, t.GameObjects[i].transform.position ); } } }

Этот скрипт хранит массив GameObjects, к которым нарисована линия. Этот обычный скрипт прикрепляется к GameObject, который считается начальной точкой для всех строк.

using UnityEngine;

[ExecuteInEditMode] public class DrawLine : MonoBehaviour { // an array of game objects which will have a // line drawn to in the Scene editor public GameObject[] GameObjects; }