Интерфейсы vs Компоненты

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Интерфейсы vs Компоненты

Сообщение Rando_OM 14 авг 2017, 08:42

Никак не могу понять как использовать интерфейсы в юнити. В одном классе например Player делать IDamageable IHittable IKillable и т.д.? Но правильнее же сделать компонентами или их совмещать? Кто как делает? Примеры бы посмотреть.
Мои игры доступны онлайн на Kongregate.com! ---->>
Rando_OM
UNIт
 
Сообщения: 94
Зарегистрирован: 22 дек 2015, 03:44
Откуда: Россия
Skype: gorodok402
  • Сайт

Re: Интерфейсы vs Компоненты

Сообщение IDoNotExist 14 авг 2017, 10:01

Rando_OM писал(а):Никак не могу понять как использовать интерфейсы в юнити. В одном классе например Player делать IDamageable IHittable IKillable и т.д.? Но правильнее же сделать компонентами или их совмещать? Кто как делает? Примеры бы посмотреть.

Для начала задайте себе вопрос, для какой цели вам нужны данные интерфейсы, потому что если вы не знаете для чего вам нужны интерфейсы и где их потом можно будет применить, то интерфейсы вам явно не нужны.
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: Интерфейсы vs Компоненты

Сообщение snezhok_13 14 авг 2017, 11:55

IDoNotExist писал(а):потому что если вы не знаете для чего вам нужны интерфейсы и где их потом можно будет применить, то интерфейсы вам явно не нужны.

во-во, поддерживаю

начитаются книжек статей и потом ООП головного мозга начинается, и интерфейсы лепят и иерархии непонятные...
Разработка игр, немножко игровая журналистика, сейчас делаем Календарь: даты выхода игр
Аватара пользователя
snezhok_13
UNIверсал
 
Сообщения: 450
Зарегистрирован: 09 сен 2013, 11:12
Skype: s.coremission
  • Сайт

Re: Интерфейсы vs Компоненты

Сообщение Rando_OM 15 авг 2017, 06:04

IDoNotExist писал(а):Для начала задайте себе вопрос, для какой цели вам нужны данные интерфейсы, потому что если вы не знаете для чего вам нужны интерфейсы и где их потом можно будет применить, то интерфейсы вам явно не нужны.


Ну я многого не знаю, так что просто бы хотелось узнать применение в интерфейсов в юнити.
Мои игры доступны онлайн на Kongregate.com! ---->>
Rando_OM
UNIт
 
Сообщения: 94
Зарегистрирован: 22 дек 2015, 03:44
Откуда: Россия
Skype: gorodok402
  • Сайт

Re: Интерфейсы vs Компоненты

Сообщение samana 15 авг 2017, 07:50

Rando_OM писал(а):Ну я многого не знаю, так что просто бы хотелось узнать применение в интерфейсов в юнити.

Юнити здесь не причём. Просто возьмите и посмотрите пару тройку уроков про интерфейсы в C#, для чего они полезны и что с помощью их можно реализовывать удобные абстрактные логические связи.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Интерфейсы vs Компоненты

Сообщение Rando_OM 15 авг 2017, 12:25

samana писал(а):Юнити здесь не причём. Просто возьмите и посмотрите пару тройку уроков про интерфейсы в C#, для чего они полезны и что с помощью их можно реализовывать удобные абстрактные логические связи.


Ну смотри, например стена и машина, оба разрушаются, но объекты разные и от одного скрипта нельзя наследовать, так что используем интерфейс. Но вместо этого можно использовать компонент. Вот и спрашиваю, как лучше то.
Мои игры доступны онлайн на Kongregate.com! ---->>
Rando_OM
UNIт
 
Сообщения: 94
Зарегистрирован: 22 дек 2015, 03:44
Откуда: Россия
Skype: gorodok402
  • Сайт

Re: Интерфейсы vs Компоненты

Сообщение IDoNotExist 15 авг 2017, 13:44

Rando_OM писал(а):например стена и машина, оба разрушаются, но объекты разные и от одного скрипта нельзя наследовать,

Это с чего нельзя?
Синтаксис:
Используется csharp
public class DestructableBase : MonoBehaviour
{
    public int health = 100;
}

public class Car : DestructableBase
{

}

public class Wall : DestructableBase
{

}

 


Но если вы хотите множественно наследовать одинаковое поведение, то тут конечно лучше выносить всё в отдельные компоненты.
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: Интерфейсы vs Компоненты

Сообщение Rando_OM 16 авг 2017, 08:38

IDoNotExist писал(а):
Rando_OM писал(а):например стена и машина, оба разрушаются, но объекты разные и от одного скрипта нельзя наследовать,

Это с чего нельзя?
Синтаксис:
Используется csharp
public class DestructableBase : MonoBehaviour
{
    public int health = 100;
}

public class Car : DestructableBase
{

}

public class Wall : DestructableBase
{

}

 


Но если вы хотите множественно наследовать одинаковое поведение, то тут конечно лучше выносить всё в отдельные компоненты.


Ну я про то, что это не правильно. И я сам компонентами делаю. В каких тогда случаях интерфейсы то использовать?
Мои игры доступны онлайн на Kongregate.com! ---->>
Rando_OM
UNIт
 
Сообщения: 94
Зарегистрирован: 22 дек 2015, 03:44
Откуда: Россия
Skype: gorodok402
  • Сайт

Re: Интерфейсы vs Компоненты

Сообщение lawsonilka 16 авг 2017, 09:07

Ну я про то, что это не правильно

Это почему!? Хотите делайте компонентами вас за это ни кто ругать не будет. Можно почитать определение что такое интерфейсы, можно просмотреть кучу примеров их использования, но если эта информация вами не усваивается то здесь поможет только ваш собственный опыт который придет со временем, доходчивей вам ни кто не объяснит.

Я так понял вы уже читали эту статью
lawsonilka
UNIверсал
 
Сообщения: 390
Зарегистрирован: 21 окт 2014, 14:48

Re: Интерфейсы vs Компоненты

Сообщение seaman 16 авг 2017, 13:59

Есть такое понятие "Программирование на уровне интерфейсов". Во многих случаях удобно.
Все наверняка его используют, просто не осознают.
Пример. Вы наверняка использовали цикл foreach. Там в качестве коллекции можно использовать очень разные типы. Просто массив, List и многое другое - даже Transform. Как компилятор понимает, что данный тип можно использовать в foreach? Очень просто. Тип должен реализовать интерфейс IEnumarable. Все.
Интерфейс - это как бы соглашение. Если тип реализует какой то интерфейс - значит в нем есть определенные методы. Значит их можно безбоязненно использовать. В частности класс реализующий IEnumarable должен содержать метод GetEnumerator(), который возвращает опять таки тип, реализующий IEnumerator. Вот с помощью этого IEnumerator и можно спокойно перебрать все члены коллекции.
К чему все это? Если твой класс реализует какой-то интерфейс - ты можешь спокойно использовать методы этого интерфейса, независимо от того какой на самом деле это класс.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Интерфейсы vs Компоненты

Сообщение lawsonilka 16 авг 2017, 15:13

Автор скорей всего не может понять разницу когда есть три компонента на одном объекте или три интерфейса на одном классе.
В случае интерфейсов достаточно представить объект как интерфейс, а в случае компонента достаточно просто его взять у объекта.
lawsonilka
UNIверсал
 
Сообщения: 390
Зарегистрирован: 21 окт 2014, 14:48

Re: Интерфейсы vs Компоненты

Сообщение Anonymyx 16 авг 2017, 16:44

К слову о foreach...
Необязательно реализовывать интерфейс, можно свой создать публичный GetEnumerator() без интрефейсов.
просто мимо проходил )
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 13