Stealch
@Stealch
Админ, мотобродяга.

Как добавить константы в public enum из другого скрипта?

Суть такова: имеется скомпиленная dll (Game.dll, там ВСЯ логика игры, пересобрать никак), содержащая список констант AmmoType.cs, используемых как в игре, так и в Inspector (custom editor, выпадающий список в Inspector). Задача: добавить константы так, чтобы в Inspector они были видны и доступны для выбора. Как это реализовать? Чтобы новые константы работали в игре - проблем нет, но они не видны в Inspector и asset приходится править блокнотом.
Список:624ff472d7354789628724.png
Оригинальный 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.
  • Вопрос задан
  • 167 просмотров
Пригласить эксперта
Ответы на вопрос 1
@NIKROTOS
Начинающий программист.
https://habr.com/ru/post/331042/
Тебе нужен пункт "Исполнение в редакторе". Просто запрашивай в скрипте список констант, или придумай что-нибудь ещё.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы