Hello.
I have two Monobehaviours, one is a Path, the other a Path Follower.
The Path Follower has a field for a Path that the user can drag and drop into the Path Follower’s Custom Inspector.
In this Custom Inspector I want to be able to access data on the referenced Path Behaviour.
Using serializedObject.FindProperty (), it successfully gets the reference to the path but when I try to then get the data from it, like the List of Way-Points, using say, Path.FindPropertyRelative (), everything returns null.
I am doing everything I should, to my knowledge, such as adding the SerializeFields, making sure everything is spelled correctly when finding the properties. Perhaps accessing a Monobehaviour from inside another is not possible?
Any help would be appreciated.
Here’s my simplified code:
Path:
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public class Path : MonoBehaviour
{
[SerializeField]
public List<WayPoint> WayPoints = new List<WayPoint>();
[System.Serializable]
public class WayPoint
{
[SerializeField]
public Vector2 Position = Vector2.zero;
}
}
Path Follower:
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public class PathFollower : MonoBehaviour
{
[SerializeField]
protected Path _path;
}
Path Follower Inspector
using System.Collections.Generic;
using UnityEditor;
[CustomEditor(typeof (PathFollower))]
public class PathFollowerEditor : Editor
{
// Properties
SerializedProperty pathProp;
SerializedProperty wayPointsProp;
void GetProperties()
{
pathProp = serializedObject.FindProperty("_path");
wayPointsProp = pathProp.FindPropertyRelative("WayPoints");
}
void DrawInspector ()
{
EditorGUILayout.PropertyField(pathProp);
// If there is a Path, utilize the Way Points' data...
}
}
At this point, I don’t even need to change data from the Path, just that the Path Follower knows what the data is.
-Thanks in advance.