Я хочу создать ProbeManager
, где я могу перемещаться по зондам, используя Handles
.Вот мой MonoBehaviour
и его Custom Editor
:
MonoBehaviour:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[ExecuteInEditMode]
public class ProbeManager : MonoBehaviour
{
public Probe[] probes;
[System.Serializable]
public class Probe
{
public Vector3 pos;
public float radius;
}
void OnDrawGizmosSelected()
{
Gizmos.color = Color.white;
for (int i = 0; i < probes.Length; i++)
{
Probe probe = probes[i];
Gizmos.DrawWireSphere(probe.pos, probe.radius);
}
}
}
Пользовательский редактор:
using UnityEngine;
using UnityEditor;
using System;
[CustomEditor(typeof(ProbeManager))]
public class ProbeManagerEditor : Editor
{
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
}
protected virtual void OnSceneGUI()
{
ProbeManager probe_manager = (ProbeManager)target;
EditorGUI.BeginChangeCheck();
for (int i = 0; i < probe_manager.probes.Length; i++)
{
probe_manager.probes[i].pos = Handles.PositionHandle(probe_manager.probes[i].pos, Quaternion.identity);
}
EditorGUI.EndChangeCheck();
}
}
Проблема заключается в том, что при смене зондовСвойства, будь то radius
или position
- Инспектор , работает нормально.Но когда я пытаюсь переместить их с помощью Дескрипторы , они телепортируются обратно в предыдущую позицию после того, как я нажму Play
.
Я подозреваю, что это как-то связано с сериализацией, но это так :(