Как убрать это?
Нужно исключить возможность изменения размера массива в инспекторе
Вот что есть:
public enum CType : byte {Default, Lava, Steklo};
public class Level : MonoBehaviour {
[System.Serializable]
public class LevelCellType {
public CType type;
public string typename;
public float mass = 0.0f;
}
public LevelCellType[] levelCellTypes = CreateTypesArray();
//создаю массив размером равным количеству перечислений в CType,
//именования которого перевожу в строковой вид
//и присваиваю соответствующему элементу новоиспеченного массива.
//Вот поэтому больше или меньше он быть не должен
static private LevelCellType[] CreateTypesArray(){
string[] names = System.Enum.GetNames(typeof(CType));
LevelCellType[] arr = new LevelCellType[names.Length];
for (int i = 0; i < arr.Length; i++){
arr[i] = new LevelCellType();
arr[i].type = (CType)i;
arr[i].typename = names[i];
}
return arr;
}
}
[CustomPropertyDrawer(typeof(Level.LevelCellType))]
public class LevelCellTypeDrawer : PropertyDrawer {
const float min = 0;
const float max = 1;
public override void OnGUI (Rect position, SerializedProperty property, GUIContent label) {
int indent = EditorGUI.indentLevel;
EditorGUI.indentLevel = 0;
label.text = property.FindPropertyRelative ("typename").stringValue;
EditorGUI.Slider (
new Rect (position.x, position.y, position.width, position.height),
property.FindPropertyRelative ("mass"),
min, max, label);
EditorGUI.indentLevel = indent;
}
}
Правда я пока не понимаю как потом этот массив обновлять -__-
С инспектором я на ВЫ, поэтому буду благодарен за любые примечания, спасибо