Зміст курсу
Бійцівська гра в Unity
Бійцівська гра в Unity
Взаємодія Гравця з Об'єктами
Інтерфейси
Інтерфейс — це своєрідний контракт, який визначає набір методів і властивостей, що мають бути реалізовані класом. Він дозволяє вказати, яку функціональність повинен мати клас, без надання деталей реалізації.
Приклад
Припустимо, ви створюєте гру в Unity і хочете реалізувати різні типи зброї, такі як мечі, рушниці та луки. Ви можете створити інтерфейс з назвою IWeapon
, який визначає базові дії, що має виконувати будь-яка зброя, наприклад, Attack()
та Reload()
.
Тепер будь-який клас, який повинен вважатися зброєю у вашій грі, має реалізовувати цей інтерфейс. Наприклад, це може бути клас Sword
або клас Gun
.
Використовуючи інтерфейси, можна гарантувати, що всі ваші види зброї матимуть однакову базову функціональність (Attack()
і Reload()
), але кожен з них може мати власну унікальну реалізацію. Це робить ваш код більш модульним і простішим для керування, особливо коли ваша гра стає складнішою.
Це інтерфейс, який ми використали у нашій грі для позначення ворогів як об'єктів, які можуть бути атаковані.
csharp
TryGetComponent
csharp
Основні моменти
raycastHit
: Це посилання на результат попадання променя. Коли ви виконуєте raycast у Unity, ви отримуєте інформацію про об'єкт, у який потрапив промінь;.TryGetComponent(out IGetAttacked getAttacked)
: Цей метод намагається отримати певний компонент з transform об'єктаGameObject
. Ключове словоout
використовується для присвоєння отриманого компонента зміннійgetAttacked
, якщо це вдалося. Якщо ні — все, що знаходиться під цимif
, буде проігноровано;IGetAttacked
: Це тип інтерфейсу, який код намагається отримати зGameObject
. Він вказує, щоGameObject
повинен містити компонент, який реалізує інтерфейсIGetAttacked
.
Якщо GameObject
, у який потрапив променевий кидок, має компонент, що реалізує інтерфейс IGetAttacked
, змінна getAttacked
після виконання цього рядка міститиме посилання на цей компонент. В іншому випадку, getAttacked
буде присвоєно значення null.
Дякуємо за ваш відгук!