Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Взаємодія Гравця з Об'єктами | Система анімації Unity
Бійцівська гра в Unity

Взаємодія Гравця з Об'єктами

Свайпніть щоб показати меню

Інтерфейси

Інтерфейс — це своєрідний контракт, який визначає набір методів і властивостей, що мають бути реалізовані класом. Він дозволяє вказати, яку функціональність повинен мати клас, без надання деталей реалізації.

Приклад

Припустимо, ви створюєте гру в 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.

question mark

Яке призначення методу TryGetComponent у Unity?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 11

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 1. Розділ 11
some-alt