Почему компоненты Image и SpriteRenderer не наследуются от одного общего базового класса? - PullRequest
0 голосов
/ 12 февраля 2019

Я исправляю скрипт, который загружает некоторые спрайты и хочет использовать его как в пользовательском интерфейсе, так и в игре.Но есть два типа рендереров для каждого и без какого-либо общего базового класса, хотя у них обоих есть общий спрайт!

Я хочу использовать и Image, и SpriteRenderer, поэтому я хочу написать вот что:

class SpriteLoader<T> where T: SomeRendererBaseClass {
  T renderer;
    void Load(){
       renderer.sprite = GetSprite();
      }
}

, но чтобы использовать "renderer.sprite", мне нужно указать T, для которого яНе найдено общего базового класса.

Если я собираюсь показывать игровых персонажей в пользовательском интерфейсе, я должен загружать спрайты в компонент Image, но в игре мне нужно делать то же самое поведение, но в SpriteRenderer, и как программисты мыне люблю повторяющиеся коды.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

По крайней мере, они должны иметь общий интерфейс.Я видел, что Unity API там не использует интерфейс лучше, чем .Net Does

0 голосов
/ 12 февраля 2019

То, что у них обоих есть спрайт, ничего не значит.

Вам просто придется иметь дело с тем фактом, что два класса не связаны друг с другом так, как выхотел бы.Это ничем не отличается от наличия класса Player, который имеет свойство name, и попытки найти общий родительский класс с помощью GameObject («у него тоже есть name!»)

Дваклассы не имеют ничего общего и не должны наследовать от какого-либо общего предка (за пределами того предка, которого они разделяют).

...