| программно изменить значение переменной | 
|  | 
| 
| Hallowed | Дата: Суббота, 16 Декабря 2017, 18:51 | Сообщение # 1 |  |   был не раз Сейчас нет на сайте | здравствуйте необходимо изменить значение переменной, получая её имя из инспектора
 
 хочется вдохнуть жизнь в следующую конструкцию:
 
 
 Код  public void ClickUp(string par_block){
 GameManager.Instance.par_block = GameManager.Instance.par_block + 1;
 // вопрос в том - как поменять значение переменной, принимаемой в par_block
 }
 par_block - название переменной в инспекторе в свойстве события On Click () в инспекторе, пишу в неё, например: Priznak_a или Priznak_b, то есть:
 в par_block подставляю название переменной, к которой работающее обращение из скриптов выглядит следующим образом:
 GameManager.Instance.Priznak_a=.... или GameManager.Instance.Priznak_b=...
 
 сейчас решаю это отвратительным костылём :((
 
 
 Код   public void ClickUp(string par_block){
 switch (par_block)
 {
 case "Priznak_a":
 {
 GameManager.Instance.Priznak_a = GameManager.Instance.Priznak_a + 1;
 }
 break;
 }
 }
 помогите пожалуйста написать правильно
 |  |  |  |  | 
| 
| pixeye | Дата: Суббота, 16 Декабря 2017, 21:22 | Сообщение # 2 |  |   Red Winter Software Сейчас нет на сайте | Можешь показать пример с картинками из инспектора где ты вообще такое используешь? Просто тут вопрос скорее в том, а нужно ли вообще такое делать
   
 ACTORS - мой фреймворк на Unity
 Until We Die - игра над которой работаю
 
 
   |  |  |  |  | 
| 
| Vostrugin | Дата: Суббота, 16 Декабря 2017, 21:33 | Сообщение # 3 |  | постоянный участник Сейчас нет на сайте | Hallowed, Пиксай правильно сказал, скорее всего тебе это не нужно. А вообще, такую задачу можно решить рефлексией. 
 
 
   
 |  |  |  |  | 
| 
| drcrack | Дата: Воскресенье, 17 Декабря 2017, 00:21 | Сообщение # 4 |  | старожил Сейчас нет на сайте | Тебе нужен SerializableDictionary, который будет и в инспекторе более-менее нормально отображаться, и в коде можно будет работать без рефлексии и прочих костылей 
 
   
 
 Сообщение отредактировал drcrack - Воскресенье, 17 Декабря 2017, 00:26 |  |  |  |  | 
| 
| Hallowed | Дата: Воскресенье, 17 Декабря 2017, 11:50 | Сообщение # 5 |  |   был не раз Сейчас нет на сайте | Цитата Vostrugin (  )   скорее всего тебе это не нужнона сцене много пар кнопка-поле_для_ввода
 при нажатии на кнопку надо чтобы изменялась соответствующая переменная, хранящаяся в объекте (это синглтон в данном случае, но мог быть и просто объект, хранящий все параметры) название этой переменной я пишу в инспекторе
 
  то есть надо было обратится к свойству объекта, чье имя создается динамически
 
 
 Цитата drcrack (  )  Тебе нужен SerializableDictionary, который будет и в инспекторе более-менее нормально отображаться, и в коде можно будет работать без рефлексии и прочих костылейможете немного пояснить - как этим пользоваться, а то там даже объявления MonoBehaviour нет и на объект в сцене ни добавить, а три строчки в Description разобраться не помогают
 
 пока буду делать через рефлексию
 
 
 Код public void ClickUp(string par_block){
 FieldInfo field = typeof(GameManager).GetField(par_block);
 field.SetValue(GameManager.Instance, ((int)field.GetValue(GameManager.Instance) + 1));
 }
Добавлено (17 декабря 2017, 11:50)---------------------------------------------
 картинка не добавилась
 http://www.screencapture.ru/file/21f6dCF9
 
  |  |  |  |  | 
| 
| pixeye | Дата: Воскресенье, 17 Декабря 2017, 12:00 | Сообщение # 6 |  |   Red Winter Software Сейчас нет на сайте | Цитата Hallowed (  )  пока буду делать через рефлексию
 Никогда и ни при каких обстоятельствах. Не издевайся над собой и игровым кодом только потому что не можешь найти ответ.
 
 ACTORS - мой фреймворк на Unity
 Until We Die - игра над которой работаю
 
 
   |  |  |  |  | 
| 
| pixeye | Дата: Воскресенье, 17 Декабря 2017, 12:06 | Сообщение # 7 |  |   Red Winter Software Сейчас нет на сайте | Если серилизуемые словари для тебя сложны то начни с этого. 
 https://unity3d.college/2016/10/05/unity-events-actions-delegates/
 http://www.unitygeek.com/delegates-events-unity/
 https://www.dotnetperls.com/action
 
 
 
 Если делегаты и эвенты тоже сложны то скорее всего у тебя крайне поверхностное представление о том что ты делаешь и найди время уделить обучению вместо создания игры.
 Это потом окупится стократ. (
 
 Старайся то что ты хочешь через инспектор делать кодом. По опыту могу сказать что настройка через инспектор чего либо - маленькое удовольствие. Быстро превращается в невыобразимую кашу которую забудешь через пару дней
 
 ACTORS - мой фреймворк на Unity
 Until We Die - игра над которой работаю
 
 
   
 
 Сообщение отредактировал pixeye - Воскресенье, 17 Декабря 2017, 12:10 |  |  |  |  | 
| 
| drcrack | Дата: Воскресенье, 17 Декабря 2017, 12:57 | Сообщение # 8 |  | старожил Сейчас нет на сайте | Цитата  можете немного пояснить - как этим пользоваться, а то там даже объявления MonoBehaviour нет и на объект в сцене ни добавить, а три строчки в Description разобраться не помогаютВместо того чтобы заводить отдельные переменные для каждого параметра, ты создаешь одно хранилище:
 
 Код public SerializableDictionary<string, int> params = new SerializableDictionary<string, int>();Он появляется в инспекторе и ты можешь добавлять туда значения, а в коде работаешь так:
 
 Код GameManager.Instance.params["par_block"] = GameManager.Instance.params["par_block"] + 1;
 
 Сообщение отредактировал drcrack - Воскресенье, 17 Декабря 2017, 12:57 |  |  |  |  |