Как отличить разные BoxCollider в инспекторе Unity - PullRequest
0 голосов
/ 04 ноября 2018

Допустим, у меня есть игровой объект "игрок" с 4 различными BoxColliders2D

У меня есть настенный скрипт, который является компонентом игрового объекта "wall".

В настенном скрипте есть 4 различных общедоступных переменных boxcolliders2D, но я не могу найти способ установить для каждой из них соответствующий boxcollider2D в игровом объекте игрока в инспекторе.

1 Ответ

0 голосов
/ 04 ноября 2018

В настенном скрипте есть 4 различных общедоступных переменных boxcolliders2D, но я не могу найти способ установить для каждого из них соответствующие boxcollider2D в игровом объекте игрока, в инспекторе.

Вы не можете сделать это из редактора, но вы должны быть в состоянии сделать это с помощью кода.

Инициализируйте ваши 4 переменные из кода с помощью функции GetComponents, которая возвращает массив компонентов, прикрепленных к GameObject. Обратите внимание на 's' в конце. Это отличается от функции GetComponent, которая возвращает только один GameObject.

public BoxCollider2D col1;
public BoxCollider2D col2;
public BoxCollider2D col3;
public BoxCollider2D col4;

void Awake()
{
    BoxCollider2D[] colliders = GetComponents<BoxCollider2D>();
    col1 = colliders[0];
    col2 = colliders[1];
    col3 = colliders[2];
    col4 = colliders[3];
}

Хотя версия кода должна работать, не присоединяйте несколько BoxCollider2D к одному GameObject. Что нужно сделать, это создать дочерний GameObject для каждого дополнительного коллайдера, который вы хотите, затем присоединить к нему компонент BoxCollider2D. Это рекомендуемый способ использования нескольких коллайдеров в одном GameObject, и это должно решить вашу проблему.

Ниже приведен скриншот того, как это должно выглядеть:

enter image description here

Теперь вы можете перетащить каждый дочерний коллайдер ( BoxCollider2D 1 , BoxCollider2D 2 , BoxCollider2D 3 ) в соответствующее public имя переменной.

...