Отображение стандартных гизмо в режиме редактора - PullRequest
0 голосов
/ 18 февраля 2019

Я пишу расширение для редактора Unity, и мне было интересно, есть ли способ показать несколько штучек для изменения масштаба / перемещения коллайдеров в виде сцены в режиме редактирования?Я не хочу заново изобретать колесо и создавать привычные вещицы (уже началась моя уродливая версия!) Спасибо!

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Я думаю, что вы говорите о дескрипторах .

В документах приведены примеры их использования, например: Handles.PositionHandle , Handles.RotationHandle и Handles.ScaleHandle .

Обычно их следует использовать в OnSceneGUI .

Vector3 newPosition = Handles.PositionHandle(currentPosition, Quaternion.identity);
Quaternion newRotation = RotationHandle(currentRotation, position);
Vector3 newScale = ScaleHandle(currentScale, position, rotation, handleSize);

Однако я бы всегдарекомендуется использовать правильное SerializedProperty, чтобы избежать проблем с отменой / повторением и пометкой «грязные» + сохранение и т. д.

Просто пример (это не переопределит дескрипторы преобразования по умолчанию, поэтомуможет запутаться)

using UnityEditor;
using UnityEngine;

[CustomEditor(typeof(Transform), true, isFallback = false)]
public class TransformEditor : Editor
{
    private SerializedProperty position;
    private SerializedProperty rotation;
    private SerializedProperty scale;

    private void OnEnable()
    {
        position = serializedObject.FindProperty("m_LocalPosition");
        rotation = serializedObject.FindProperty("m_LocalRotation");
        scale = serializedObject.FindProperty("m_LocalScale");
    }

    private void OnSceneGUI()
    {
        serializedObject.Update();

        position.vector3Value = Handles.PositionHandle(position.vector3Value, Quaternion.identity);
        rotation.quaternionValue = Handles.RotationHandle(rotation.quaternionValue, position.vector3Value);
        scale.vector3Value = Handles.ScaleHandle(scale.vector3Value, position.vector3Value, rotation.quaternionValue, 1);

        serializedObject.ApplyModifiedProperties();
    }
}
0 голосов
/ 18 февраля 2019

Может быть, вы имеете в виду это:

enter image description here

Или вы имеете в виду вещицы для своих собственных составных коллайдеров?

...