Суть такова: имеется скомпиленная dll (Game.dll, там ВСЯ логика игры, пересобрать никак), содержащая список констант AmmoType.cs, используемых как в игре, так и в Inspector (custom editor, выпадающий список в Inspector). Задача: добавить константы так, чтобы в Inspector они были видны и доступны для выбора. Как это реализовать? Чтобы новые константы работали в игре - проблем нет, но они не видны в Inspector и asset приходится править блокнотом.
Список:
Оригинальный AmmoType.cs:
using System;
public enum AmmoType
{
AmmoNone,
Ammo10mm,
Ammo5_45mm,
Ammo9mm,
Ammo12g,
Ammo7_62mm,
Ammo307cal,
Ammo14_5mm,
Ammo7mm_54R,
AmmoBB,
AmmoBolt,
Ammo356cal,
AmmoPB,
AmmoFuel,
Ammo6_49mm,
AmmoRubber
}
Мой AmmoType.cs с недостающими константами:
using System;
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
//Эксперимент: Добавил 2 типа патронов, работают, но не видны в Inspector
public enum AmmoType
{
Ammo45g = 16,
Ammo5_7mm = 17
}
Отрисовка этого списка происходит так (на сколько я понял):
using System;
using UnityEditor;
using UnityEngine;
[CustomPropertyDrawer(typeof(EnumFlagsAttribute))]
public class EnumFlagsAttributeDrawer : PropertyDrawer
{
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
bool flag = !property.hasMultipleDifferentValues;
if (flag)
{
property.intValue = EditorGUI.MaskField(position, label, property.intValue, property.enumNames);
}
else
{
EditorGUI.LabelField(position, label);
}
}
}
Если я создам другой enum с новыми константами, как прописать чтобы редактор при значении в AmmoType.cs > 16 брал значения из моего enum, к примеру UserAmmoType.cs, но добавлял их в тот же список? Логика игры такова, что оружие стреляет любыми патронами исходя из значения Type в enum, который передается ассету, а в редакторе видны еще и названия, опять же из AmmoType.cs.