Взаємодія Гравця з Об'єктами
Свайпніть щоб показати меню
Інтерфейси
Інтерфейс — це своєрідний контракт, який визначає набір методів і властивостей, що мають бути реалізовані класом. Він дозволяє вказати, яку функціональність повинен мати клас, без надання деталей реалізації.
Приклад
Припустимо, ви створюєте гру в Unity і хочете реалізувати різні типи зброї, такі як мечі, рушниці та луки. Ви можете створити інтерфейс з назвою IWeapon, який визначає базові дії, що має виконувати будь-яка зброя, наприклад, Attack() та Reload().
Тепер будь-який клас, який повинен вважатися зброєю у вашій грі, має реалізовувати цей інтерфейс. Наприклад, це може бути клас Sword або клас Gun.
Використовуючи інтерфейси, можна гарантувати, що всі ваші види зброї матимуть однакову базову функціональність (Attack() і Reload()), але кожен з них може мати власну унікальну реалізацію. Це робить ваш код більш модульним і простішим для керування, особливо коли ваша гра стає складнішою.
Це інтерфейс, який ми використали у нашій грі для позначення ворогів як об'єктів, які можуть бути атаковані.
public interface IGetAttacked
{
public void GetAttacked(int damage);
}
TryGetComponent
if (rayCastHit.transform.TryGetComponent(out IGetAttacked getAttacked))
{
getAttacked.GetAttacked(damage);
attackEffect.transform.position = rayCastHit.point;
attackEffect.Play();
isAttacking = false;
}
Основні моменти
raycastHit: Це посилання на результат попадання променя. Коли ви виконуєте raycast у Unity, ви отримуєте інформацію про об'єкт, у який потрапив промінь;.TryGetComponent(out IGetAttacked getAttacked): Цей метод намагається отримати певний компонент з transform об'єктаGameObject. Ключове словоoutвикористовується для присвоєння отриманого компонента зміннійgetAttacked, якщо це вдалося. Якщо ні — все, що знаходиться під цимif, буде проігноровано;IGetAttacked: Це тип інтерфейсу, який код намагається отримати зGameObject. Він вказує, щоGameObjectповинен містити компонент, який реалізує інтерфейсIGetAttacked.
Якщо GameObject, у який потрапив променевий кидок, має компонент, що реалізує інтерфейс IGetAttacked, змінна getAttacked після виконання цього рядка міститиме посилання на цей компонент. В іншому випадку, getAttacked буде присвоєно значення null.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат