PragmaGames
@PragmaGames
Увлекаюсь Unity.

Как узнать от каких объектов наследовался данный объект?

Всем привет. Ради интереса пытаюсь сделать что-то похожее на систему компонентов в unity. В данный момент я могу получить объект который был добавлен ранее по его типу, но что делать если запрашиваемый класс является базовым классом для какого-нибудь объекта который хранится в словаре ? Например в словаре хранятся "MovementComponent,PistolComponent,RifleComponent" и я запрашиваю через GetCustomComponent"WeaponComponent" который является базовым для "PistolComponent,RifleComponent"

P.S Понятно что можно получить весь список значений из словаря и циклом проверять через is возможность приведения объекта. Но возможно есть более элегантный способ ? Так как в оболочке кода Unity они передают в движок тип искомого объекта и пустую интовую ссылку для возврата компонента.

private Dictionary<Type, MonoBehaviour> _componentContainer;

public void AddCustomComponent<T>(MonoBehaviour component) where T : MonoBehaviour
{
     _componentContainer.Add(typeof(T), component);
}

public void RemoveCustomComponent<T>() where T : MonoBehaviour
{
     _componentContainer.Remove(typeof(T));
}

public T GetCustomComponent<T>() where T : MonoBehaviour
{
     return _componentContainer[typeof(T)] as T;
}
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы