Size: a a a

Unity Floodилка

2021 May 20

SE

Stanislav Entaltsev in Unity Floodилка
Код, что прислал то правильный?
источник

M

Marat in Unity Floodилка
С точки зрения синтаксиса да, и логики вроде тоже, но не уверен, что в контексте общей задачи это целесообразно
источник

SE

Stanislav Entaltsev in Unity Floodилка
Ну если сделать другие интерфейсы для других триггеров, почему нет
источник

M

Marat in Unity Floodилка
Смысл интерфейсов теряется
источник

M

Marat in Unity Floodилка
Их суть в том, что внешнему коду-клиенту похер, что это дверь или окно. Ему главное знать, что это можно открыть или закрыть
источник

SE

Stanislav Entaltsev in Unity Floodилка
Почему? С точки зрения удоства и чистоты кода, удобнее клепать разные интерфейсы, а не классы
источник

SE

Stanislav Entaltsev in Unity Floodилка
Вот пример от самого юнити
public interface IKillable
{
   void Kill();
}

public interface IDamageable<T>
{
   void Damage(T damageTaken);
}
источник

SE

Stanislav Entaltsev in Unity Floodилка
Согласен, с дверьми и окнами история одинаковая. Если речь о письмах, которые можно к примеру читать, забирать, выбрасывать, там войды другие
источник

M

Marat in Unity Floodилка
Все зависит от уровня абстракции. Нет смысла выделять интерфейс, если его не планируется использовать для разных классов.
источник

SE

Stanislav Entaltsev in Unity Floodилка
Так я ведь выше о чём пишу)
источник

M

Marat in Unity Floodилка
Сделай метод Interact в интерфейсе триггера
источник

SE

Stanislav Entaltsev in Unity Floodилка
интефейс IOpenable для окон, дверей, сундуков, шкафов подходит. Верно?
источник

SE

Stanislav Entaltsev in Unity Floodилка
А что он будет делать?
источник

M

Marat in Unity Floodилка
В аргументах этого метода - данные для конкретного класса, использующий интерфейс. Скажем, abstract class InteractData. От этого класса наследуешь под каждый тип триггера данные. В абстрактном классе можешь оставить enum InteractType, тип взаимодействия. Каждый триггер проверяет этот тип, и если он подходит для данного триггера, он распаковывает InteractData в конкретный класс и работает с ним
источник

SE

Stanislav Entaltsev in Unity Floodилка
В теории IOpenable можно и письмам соотнести, так как суть в том же буле, но у письма может быть и другой функционал, поэтому его можно вынести в отдельный интерфейс
источник

SE

Stanislav Entaltsev in Unity Floodилка
Ты меня извини, я совсем недавно в unity и не понимаю пока ничего про эту абстрактность
источник

M

Marat in Unity Floodилка
Абстракция не только в юнити, это термин ООП
источник

M

Marat in Unity Floodилка
Типо, я, ты, сын маминой подруги - все это люди. Убийце все равно кого убивать - он абстрагируется от того, что убивает тебя, меня или сына маминой подруги. Ему важно знать, что он убивает людей.
Такая вот кроважадная абстракция
источник

SE

Stanislav Entaltsev in Unity Floodилка
Даже если так, я в вебе не особо использую тонкости ооп, ни абстракцию, ни наследование, ни полиморфизм, ничего такого. И как в коде это реализуется, плохо понимаю
источник

SE

Stanislav Entaltsev in Unity Floodилка
Ну это я понимаю)
источник