Отображение стандартных гизмо в режиме редактора

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

2 ответа

Решение

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

В документах приведены примеры их использования, например, 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 чтобы избежать проблем с Undo/Redo и пометкой вещи как грязные + сохранение и т. д.

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

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();
    }
}

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

https://stackru.com/images/abe cd78efa58c8760b7547785c7db16def6d3fde.png

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

Другие вопросы по тегам