Как перенести значение из скрипта префаба в другой?

Общие вопросы о Unity3D

Как перенести значение из скрипта префаба в другой?

Сообщение DarkLight Games 09 апр 2021, 11:22

Привет
В общем, у меня возникла такая проблема: у меня есть скрипт босс и скрипт его пули. Оба скрипта находятся в двух разных префабах. Мне из скрипта босса нужно передать вектор пуле. Подскажите пожалуйста, как это сделать?
DarkLight Games
UNец
 
Сообщения: 26
Зарегистрирован: 15 фев 2021, 09:03

Re: Как перенести значение из скрипта префаба в другой?

Сообщение TeslaGan 09 апр 2021, 12:00

DarkLight Games писал(а):Привет
В общем, у меня возникла такая проблема: у меня есть скрипт босс и скрипт его пули. Оба скрипта находятся в двух разных префабах. Мне из скрипта босса нужно передать вектор пуле. Подскажите пожалуйста, как это сделать?

самый простой способ, который мне нравится. предположим скрипт движения пули называется MoveBullet. а скорость хранится в float Speed(лишь пример, чтобы уловить идею) тогда
Синтаксис:
Используется csharp
public MoveBullet BulletPrefub;

//когда нам надо заспаунить пулю
Instatiate(BulletPrefub).Speed = 500;
 

если нам надо сделать еще что-то(например задать время уничтожения пули). можно Instatiate присвоить переменной
Синтаксис:
Используется csharp
MoveBullet mb = Instatiate(BulletPrefub);
mb.Speed = 500;
mb.gameObject.Destroy(gameObject,500); //сейчас не вспомню как правильно дестрой вызывать
 




чуть менее красиво будет с классическим вариантом
Синтаксис:
Используется csharp
public GameObject BulletPrefub;

//когда спауним пулю
GameObject go = Instatiate(BulletPrefub);
go.getComponent<MoveBullet>().Speed = 500;


плюс первого варианта - мы не ищем компоненты через тяжелые getComponent, а сразу передаем их через префаб(при перетаскивании префаба, мы сразу даем ссылку на компонент MoveBullet)
TeslaGan
UNITрон
 
Сообщения: 315
Зарегистрирован: 01 авг 2015, 18:00

Re: Как перенести значение из скрипта префаба в другой?

Сообщение DarkLight Games 09 апр 2021, 12:24

Это не совсем то что мне надо. Мне надо в пуле добиться чего-то типа этого
Синтаксис:
  1. RigidBody2D rb; 
  2. rb.velocity = VectorVariableInBossScript // последняя переменная - Vector3 в скрипте босса 

Мне нужно добиться, чтобы босс мог менять направление полёта пули
DarkLight Games
UNец
 
Сообщения: 26
Зарегистрирован: 15 фев 2021, 09:03

Re: Как перенести значение из скрипта префаба в другой?

Сообщение TeslaGan 09 апр 2021, 12:38

DarkLight Games писал(а):Это не совсем то что мне надо. Мне надо в пуле добиться чего-то типа этого
Синтаксис:
  1. RigidBody2D rb; 
  2. rb.velocity = VectorVariableInBossScript // последняя переменная - Vector3 в скрипте босса 

Мне нужно добиться, чтобы босс мог менять направление полёта пули

вместо класса MoveBullet и переменной speed у вас может быть все что угодно. вы сохраняете префаб в боссе под типом скрипта, в том числе и RigidBody2D(это тоже если что, просто скрипт). если далее надо управлять пулей, сохраните ее. Instatiate возвращает ссылку на объект. например создаем поле List<RigidBody2D> ListBullet;
и при инстациировании добавляем пулю в это поле ListBullet.Add(Instatiate(BulletPrefub));
если и это не понятно, я бы посоветовал изучить вам основы c# и в частности разобраться с понятиями глобальной и локальной переменных, зачем они нужны и как их использовать.
TeslaGan
UNITрон
 
Сообщения: 315
Зарегистрирован: 01 авг 2015, 18:00

Re: Как перенести значение из скрипта префаба в другой?

Сообщение DarkLight Games 09 апр 2021, 12:49

Веское замечание :)) . Пойду читать документацию, что - ли.
DarkLight Games
UNец
 
Сообщения: 26
Зарегистрирован: 15 фев 2021, 09:03


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: GoGo.Ru [Bot] и гости: 7