653просмотров
31.9%от подписчиков
7 марта 2026 г.
Score: 718
⚡️ Unity: Интерфейсы в C# — сила контрактов Интерфейс — это контракт, который гарантирует, что класс умеет делать определённые действия. Неважно, кто его подписал — игрок, враг или бочка. Главное — они все могут выполнить условия контракта.
В интерфейсах в c# не принято делать реализацию функций, свойств, только объявление. 🔥 Зачем это в играх? Допустим, у тебя есть меч, который может бить врагов и ломать бочки. Без интерфейсов — это ад из if (collider.GetComponent<Enemy>() != null)... С интерфейсами — чисто и гибко. Можно наследовать от любого количества интерфейсов, в отличии от наследования от классов. Если мы хотим сделать приватное свойство для реализующего интерфейс класса, мы можем не указывать set в свойстве интерфейса 🎯 Реальный пример: взаимодействие с объектами public class Bullet : MonoBehaviour
{ private const int _damage = 10; private void CheckHit() { //проверка столкновений с IHealth hitObj.TakeDamage(_damage); }
} public class Player : MonoBehaviour, IHealth
{ // Реализация свойства public int Health { get; private set; } // Прочие поля // Прочии свойства // Прочии функции // Реализация функции public void TakeDamage(int damage) => Health -= damage;
} public interface IHealth
{ // Обьявление свойства Health int Health { get; } // Обьявление функции TakeDamage void TakeDamage(int damage);
} 💡 Два главных плюса: 🔸 Гибкость — добавляй новые разрушаемые объекты без изменения кода меча
🔸 Чистота — избавляешься от гигантских цепочек проверок через GetComponent 🚀 Где ещё использовать? • IInteractable для взаимодействия с NPC, дверями, предметами
• ICollectable для сбора монет, аптечек, боеприпасов
• ISaveable для системы сохранений 💬 Используешь интерфейсы в своих проектах? Делися в комментах! 🔔 Подпишись — ещё больше C# фишек для геймдева Пост помог написать @Nokskiy
👉Akrus Games | Unity