Всем привет! Пытаюсь разместить кнопку в моем AnimationData, который имеет кастомный PropertyDrawer так, чтобы потом в объекте AnimatedObject, который имеет список таких AnimationData она отображалась корректно. Но сейчас она появляется вот так
Код в котором создаю кнопку:
private float DrawPositionsFields(SerializedProperty property, float x, float currentY, float width)
{
float lineHeight = EditorGUIUtility.singleLineHeight;
float spacing = EditorGUIUtility.standardVerticalSpacing;
Rect startPositionRect = new Rect(x, currentY, width, lineHeight);
Rect endPositionRect = new Rect(x, currentY + lineHeight + spacing, width, lineHeight);
SerializedProperty startPositionProperty = property.FindPropertyRelative(StartPositionField);
SerializedProperty endPositionProperty = property.FindPropertyRelative(EndPositionField);
startPositionProperty.vector3Value = EditorGUI.Vector3Field(startPositionRect, StartPositionFieldLabel, startPositionProperty.vector3Value);
endPositionProperty.vector3Value = EditorGUI.Vector3Field(endPositionRect, EndPositionFieldLabel, endPositionProperty.vector3Value);
currentY += 2 * (lineHeight + spacing);
Rect buttonRect = new Rect(x, currentY, width, lineHeight); // Используем ширину поля
if (GUI.Button(buttonRect, "Edit"))
{
// Логика для кнопки
var targetObject = property.serializedObject.targetObject;
if (targetObject is AnimatedObject animatedObject)
{
int index = GetIndex(property.propertyPath);
if (index >= 0 && index < animatedObject.Animations.Count)
{
AnimationData data = animatedObject.Animations[index];
data?.OnEditing?.Invoke(data);
Debug.Log("OnEditing invoked");
}
}
}
return currentY + (lineHeight + spacing);
}
Код из моего кастомного инспектора AnimatedObject
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(AnimatedObject))]
public class AnimatedObjectEditor : Editor
{
public override void OnInspectorGUI()
{
serializedObject.Update();
SerializedProperty animationsProperty = serializedObject.FindProperty("_animations");
EditorGUILayout.PropertyField(animationsProperty, new GUIContent("Animations"), true);
DrawStopEditButton();
serializedObject.ApplyModifiedProperties();
}
private static void DrawStopEditButton()
{
if (GUILayout.Button("Stop edit"))
{
}
}
}
Хочу сохранить стандартный вид списка, но при этом добавить в него кнопку. Когда я не перерисовываю инспектор, то все отображается корректно, однако мне нужна в нем кнопка Stop edit и при её добавлении возникают такие трудности. Можно ли это как-то исправить?