Я пытаюсь создать игру о стрельбе из лазеров разных типов, и у каждого из них свое поведение. При одновременном срабатывании эти лазеры станут синергизированными и станут одним, более мощным лазером, который использует все характеристики отдельных лазеров одновременно.
Для выполнения sh я создаю пустой объект GameObject для представления лазера. и затем добавление компонентов, основанных на различном поведении, которое это будет иметь. Каждый из обычных, не синергированных лазеров определяется сценарием объекта со списком поведения, которое они будут использовать - из какого типа объекта составлен список, это проблема, с которой я столкнусь через секунду. Дело в том, что моя цель состоит в том, чтобы создать экземпляр пустого GameObject и добавить компоненты из объединенного списка всех вариантов поведения, которые мне нужно использовать.
Так что проблема в том, что я не могу понять, как добавить компоненты в объект, так что я могу вручную выбрать, какие сценарии добавить в окне инспектора для объектов сценариев. Я пытался использовать строки как тип, но я не мог заставить это работать; та же сделка возникла, когда я попробовал Objects Я не могу напрямую назначить сценарии для компонентов; и я не могу назначить MonoBehaviours или заставить их работать при добавлении компонента либо. Если возможно, я бы хотел использовать строки для добавления компонентов, основанных на имени скрипта, поэтому я просто поместу здесь часть моего неудачного кода для этого конкретного случая.
ПРИМЕЧАНИЯ: в данном случае «Laser» относится к структуре, которую я создал почти с теми же переменными, что и в объекте сценариев, так что вы можете просто обращаться с ним как с объектом сценариев, это в основном то же самое; фактический объект сценариев называется «LaserProperties». Один из конструкторов буквально просто принимает значение LaserProperties и вводит все соответствующие переменные. «LaserBehaviours» относится к списку строк, которые я пытаюсь превратить в компоненты. Код только выполняется в функции Start для целей тестирования.
public LaserProperties props;
private void Start(){
Laser laser = new Laser(props);
GameObject laserObject = Instantiate(new GameObject("New Laser"), transform.position, Quaternion.identity);
foreach(string laserBehaviour in laser.laserBehaviours){
Component behaviour = laserBehaviour as Component;
laserObject.AddComponent(behaviour.GetType());
}
}
Мне известно, что я не корректно приводил строку к компоненту, но если у кого-то есть какие-либо предложения о том, как это сделать, было бы очень радушно.
Если у вас есть ответ, большое спасибо, что это очень полезно.