- Home /
Is it posible to edit MonoScript attributes from editor?
[System.Serializable]
public abstract class Car {
public string name;
}
[System.Serializable]
public class Ferrari {
public float turboSpeed;
}
[System.Serializable]
public class Hippie {
public float grillPower;
}
[System.Serializable]
public class CarManager {
public MonoScript[] myCars;
}
With this code separated in in diferent files, when I go to the inspector, I see this if I fill the list:
But now I want that when I put the the cars in the list, I can edit the attributes os this objects like I can do with CarManager or like if I make the list of some kind of car like Ferrari or Hippie. Is it posible? I've been looking around for an entire day and I didn't find anything about it. Any sugestion?
Thanks!
Answer by Pangamini · Jun 11, 2019 at 09:34 AM
There's a big error in your code. MonoScript type refers to the actual text asset that's used in the code compilation. It is NOT a base class of any class you use ingame. Standard scriptable base classes in Unity are ScriptableObject and MonoBEhaviour, but your cars are not deriving from any of them. Which is NOT a problem. The problem you might encounter here is this: 1. Your car classes do't have any shared base class. Means you cannot have a list of cars of different type. And even if you had: 2. Unity serializes everything that doesn't derive from UnityEngine.Object as an embedded value. However, lists and arrays don't support polymorphism (serialization), which means you cannot serialize a list of objects of different type. You can, however, serialize a list of references, which can point to objects of a different type. To do this, you could:
Have a base class Car that derives from ScriptableObject, all your cars derive from this type
Have a serialized array of type Car[]
Instantiate objects of different car types and assign it to the list
Thanks for the help, and your solution to polymorphic arrays is so smart! I didn't think about it hehe, my bad.
Your answer
Follow this Question
Related Questions
Setting custom amount of space between elements in a custom inspector with EditorGUILayout ? 1 Answer
Help with Missing Monobehaviours and Asset Serialization? 0 Answers
GameObject HideFlags.DontSave not working as expected 1 Answer
Is it possible to create a custom gettter/setter on SerializedProperty ? 0 Answers
Custom Editor for Monobehavior with custom property not retaining Gameobject references 0 Answers