Взаємодія Гравця з Об'єктами
Інтерфейси
Інтерфейс — це своєрідний контракт, який визначає набір методів і властивостей, що мають бути реалізовані класом. Він дозволяє вказати, яку функціональність повинен мати клас, без надання деталей реалізації.
Приклад
Припустимо, ви створюєте гру в 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.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 3.33
Взаємодія Гравця з Об'єктами
Свайпніть щоб показати меню
Інтерфейси
Інтерфейс — це своєрідний контракт, який визначає набір методів і властивостей, що мають бути реалізовані класом. Він дозволяє вказати, яку функціональність повинен мати клас, без надання деталей реалізації.
Приклад
Припустимо, ви створюєте гру в 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.
Дякуємо за ваш відгук!