Как задать имя переменной через string

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Как задать имя переменной через string

Сообщение bond007in 26 фев 2019, 14:51

Добрый день. Как превратить string в имя переменной?
Например:

public string ИмяПеременной;

ДругойОбъект.GetComponent<НазваниеСкрипта>().ИмяПеременной += 1;
bond007in
UNIт
 
Сообщения: 92
Зарегистрирован: 20 фев 2014, 12:49

Re: Как задать имя переменной через string

Сообщение ~AvA~ 26 фев 2019, 14:59

Я ничего не понял, давай чуть-чуть по-нормальному попробуем :)

Есть скрипт, у него есть переменная типа string, этот скрипт висит на каком-то GameObject
Какой-то другой скрипт, получает эту переменную и чего ты хочешь с ней сделать?

Так же было бы неплохо указать, что сейчас происходит? Не компилируется? Какие-то ошибки? Где нормальный скрипт который ты используешь?
Не волнуйся, никто не украдёт твой скирпт, можешь смело его постить вот прям сюда
Аватара пользователя
~AvA~
UNIверсал
 
Сообщения: 396
Зарегистрирован: 17 фев 2015, 13:09

Re: Как задать имя переменной через string

Сообщение bond007in 26 фев 2019, 15:19

~AvA~ писал(а):Я ничего не понял, давай чуть-чуть по-нормальному попробуем :)

Есть скрипт, у него есть переменная типа string, этот скрипт висит на каком-то GameObject
Какой-то другой скрипт, получает эту переменную и чего ты хочешь с ней сделать?

Так же было бы неплохо указать, что сейчас происходит? Не компилируется? Какие-то ошибки? Где нормальный скрипт который ты используешь?
Не волнуйся, никто не украдёт твой скирпт, можешь смело его постить вот прям сюда

Да все верно. Нужно обратиться с одного объекта к другому объекта, на котором добавить +1 к int. А имя этой переменной вписывать в поле string. Просто не охото писать для каждого объекта отдельный скрипт который по сути отличается только названием переменной.
bond007in
UNIт
 
Сообщения: 92
Зарегистрирован: 20 фев 2014, 12:49

Re: Как задать имя переменной через string

Сообщение 1max1 26 фев 2019, 15:53

Всего одно слово - рефлексия.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Как задать имя переменной через string

Сообщение seaman 26 фев 2019, 15:58

Есть куча скриптов, в каждом есть переменная int. Имена переменных - разные. Нужно независимо от имени переменной изменить этот int.
Верно?
Тогда удобнее всего - интерфейсы. Эти классы должны реализовать интерфейс с методом ChangeInt(value). При нужде изменить этот value - просто кастишь к интерфейсу и вызываешь метод.
Синтаксис:
Используется csharp
public interface IChangeInt {
  void ChangeInt(int value);
}

public myClass : IChangeInt  {
  private int ИмяПеременной;

  public void ChangeInt(int value) {
    ИмяПеременной += value;
  }
...
}

private myClass myvar;
...
var c = (IChangeInt )myvar;
c.ChangeInt(1);


Всего одно слово - рефлексия.

Рефлексия - мощная штука, но не всегда нужна...
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Как задать имя переменной через string

Сообщение bond007in 26 фев 2019, 16:08

seaman писал(а):Есть куча скриптов, в каждом есть переменная int. Имена переменных - разные. Нужно независимо от имени переменной изменить этот int.
Верно?
Тогда удобнее всего - интерфейсы. Эти классы должны реализовать интерфейс с методом ChangeInt(value). При нужде изменить этот value - просто кастишь к интерфейсу и вызываешь метод.
Синтаксис:
Используется csharp
public interface IChangeInt {
  void ChangeInt(int value);
}

public myClass : IChangeInt  {
  private int ИмяПеременной;

  public void ChangeInt(int value) {
    ИмяПеременной += value;
  }
...
}

private myClass myvar;
...
var c = (IChangeInt )myvar;
c.ChangeInt(1);


Всего одно слово - рефлексия.

Рефлексия - мощная штука, но не всегда нужна...

Спасибо. Попробую разобраться.
bond007in
UNIт
 
Сообщения: 92
Зарегистрирован: 20 фев 2014, 12:49

Re: Как задать имя переменной через string

Сообщение lawson 26 фев 2019, 16:46

Синтаксис:
Используется csharp
BroadcastMessage(имяПеременной, значение)

?
lawson
UNIверсал
 
Сообщения: 481
Зарегистрирован: 14 сен 2012, 21:20

Re: Как задать имя переменной через string

Сообщение seaman 26 фев 2019, 17:34

Давно не использую BroadcastMessage, но в свое время о ней писали как об очень медленной вещи.
Если уж так, то можно UnityEvent использовать или signal-ы из zenject
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара


Вернуться в Почемучка

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 25