Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

ArcHandle

класс в UnityEditor.IMGUI.Controls

Описание

Класс составной ручки для редактирования угла и радиуса в представлении "Сцена".

ArcHandle в представлении сцены.

Этот класс позволяет отображать маркеры управления для редактирования угла и радиуса дуги. Дуга начинается с Vector3.forward, умноженного на radius, и вращается вокруг Vector3.up. На дескриптор, отображаемый методом DrawHandle этого класса, влияет глобальное состояние в классе Handles, например Handles.matrix и Handles.color.

Следующий компонент определяет объект со свойствами угла и силы.

using UnityEngine;

public class ProjectileExample : MonoBehaviour { public float elevationAngle { get { return m_ElevationAngle; } set { m_ElevationAngle = value; } } [SerializeField] float m_ElevationAngle = 45f;

public float impulse { get { return m_Impulse; } set { m_Impulse = value; } } [SerializeField] float m_Impulse = 20f;

public Vector3 facingDirection { get { Vector3 result = transform.forward; result.y = 0f; return result.sqrMagnitude == 0f ? Vector3.forward : result.normalized; } }

protected virtual void Start() { GameObject ball = GameObject.CreatePrimitive(PrimitiveType.Sphere);

Vector3 direction = facingDirection; direction = Quaternion.AngleAxis(elevationAngle, Vector3.Cross(direction, Vector3.up)) * direction; ball.AddComponent<Rigidbody>().AddForce(direction * impulse, ForceMode.Impulse); } }

Следующий пример пользовательского редактора позволяет редактировать угол возвышения и свойства силы для этого компонента в представлении «Сцена», где сила представлена радиусом ручки.

using UnityEditor; using UnityEditor.IMGUI.Controls; using UnityEngine;

[CustomEditor(typeof(ProjectileExample))] public class ProjectileExampleEditor : Editor { ArcHandle m_ArcHandle = new ArcHandle();

protected virtual void OnEnable() { // arc handle has no radius handle by default m_ArcHandle.SetColorWithRadiusHandle(Color.white, 0.1f); }

// the OnSceneGUI callback uses the Scene view camera for drawing handles by default protected virtual void OnSceneGUI() { ProjectileExample projectileExample = (ProjectileExample)target;

// copy the target object's data to the handle m_ArcHandle.angle = projectileExample.elevationAngle; m_ArcHandle.radius = projectileExample.impulse;

// set the handle matrix so that angle extends upward from target's facing direction along ground Vector3 handleDirection = projectileExample.facingDirection; Vector3 handleNormal = Vector3.Cross(handleDirection, Vector3.up); Matrix4x4 handleMatrix = Matrix4x4.TRS( projectileExample.transform.position, Quaternion.LookRotation(handleDirection, handleNormal), Vector3.one );

using (new Handles.DrawingScope(handleMatrix)) { // draw the handle EditorGUI.BeginChangeCheck(); m_ArcHandle.DrawHandle(); if (EditorGUI.EndChangeCheck()) { // record the target object before setting new values so changes can be undone/redone Undo.RecordObject(projectileExample, "Change Projectile Properties");

// copy the handle's updated data back to the target object projectileExample.elevationAngle = m_ArcHandle.angle; projectileExample.impulse = m_ArcHandle.radius; } } } }

Смотрите так же: Editor.OnSceneGUI, Handles.SetCamera.

Свойства

angle Возвращает или указывает угол дуги ручки.
angleHandleColor Возвращает или задает цвет маркера управления углом.
angleHandleDrawFunction CapFunction для использования при отображении маркера управления углом.
angleHandleSizeFunction Функция SizeFunction для указания размера ручки управления углом.
fillColor Возвращает или задает цвет формы дуги.
radius Возвращает или указывает радиус дуги ручки.
radiusHandleColor Возвращает или задает цвет маркера управления радиусом.
radiusHandleDrawFunction CapFunction для использования при отображении маркера управления радиусом.
radiusHandleSizeFunction Функция SizeFunction для указания размера ручки управления углом.
wireframeColor Возвращает или задает цвет изогнутой линии снаружи дуги.

Конструкторы

ArcHandle Создает новый экземпляр класса ArcHandle.

Публичные Методы

DrawHandle Функция для отображения этого экземпляра в текущей камере дескриптора с использованием его текущей конфигурации.
SetColorWithoutRadiusHandle Устанавливает для angleHandleColor, wireframeColor и fillColor одно и то же значение, где fillColor будет иметь указанное значение альфа-канала. Для radiusHandleColor будет задано значение Color.clear, а ручка радиуса будет отключена.
SetColorWithRadiusHandle Устанавливает для angleHandleColor, radiusHandleColor, wireframeColor и fillColor одно и то же значение, где fillColor будет иметь указанное значение альфа-канала.

Статические Методы

DefaultAngleHandleDrawFunction CapFunction, рисующая линию, заканчивающуюся Handles.CylinderHandleCap.
DefaultAngleHandleSizeFunction Функция SizeFunction, возвращающая фиксированный размер экранного пространства.
DefaultRadiusHandleSizeFunction Функция SizeFunction, возвращающая фиксированный размер экранного пространства.
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3