ссылка на переменную в инспекторе (адрес/указатель)
|
|
zaicev9797 | Дата: Четверг, 28 Июня 2018, 11:20 | Сообщение # 1 |
AbRaKaDaBrA
Сейчас нет на сайте
| Предположим есть у меня какой то объект. Есть у него две переменных health и fuel и может потом я захочу к нему добавить еще shield. И есть у меня два хелзбара для health и для fuel и потом я еще возможно захочу добавить бар для shield. Мне очень лень писать практически один и тот же скрипт для каждого из хелзбаров, и менять там лишь только название переменной которую он берет из моего объекта. Мне бы хотелось просто указывать в инспекторе адрес (ну типа как в плюсах к переменной можно либо по адресу либо по указателю добраться) или мб. имя переменной к которой конкретный хелзбар будет оращаться, т.к. в теории еще малоли для каких параметров кроме этих трех я захочу сделать бары, но алгоритм независимо от этого останется тем же. Есть способ это сделать?
проект Mysterious Space. The losted moment
|
|
| |
orkons | Дата: Четверг, 28 Июня 2018, 11:49 | Сообщение # 2 |
частый гость
Сейчас нет на сайте
| А какой-там скрипт для каждого хелсбара? Там условно говоря 2 строчки всего. Надо получить ссылку на слайдер, отображающий ХП полоску, и ему присваивать значение переменной хп/топлива/защиты.
Сообщение отредактировал orkons - Четверг, 28 Июня 2018, 11:51 |
|
| |
zaicev9797 | Дата: Четверг, 28 Июня 2018, 11:55 | Сообщение # 3 |
AbRaKaDaBrA
Сейчас нет на сайте
| если честно, просто с естетической точки зрения. Просто кайфово же, когда просто передал значение по ссыллке, и не надо стопицот однотипных скриптов плодить, плюс еще в итоге меньше времени на компиляцию + меньший размер исходного файла. Все почучуть складывается и в итоге тогда проект больше походит на профессиональный продукт, нежели на школьную поделку и проще людей к совместной разработке привлечь.
проект Mysterious Space. The losted moment
|
|
| |
drcrack | Дата: Четверг, 28 Июня 2018, 11:56 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| делаешь string targetFloat и дальше рефлексией GetType() GetFields() GetValue() придется написать кучу кода и все будет очень медленно, зато не придется писать 2 строчки каждый раз при добавлении нового бара
Сообщение отредактировал drcrack - Четверг, 28 Июня 2018, 12:01 |
|
| |
zaicev9797 | Дата: Четверг, 28 Июня 2018, 11:58 | Сообщение # 5 |
AbRaKaDaBrA
Сейчас нет на сайте
| оооо, вот эт похоже на то что мне нужно, ушол курить
проект Mysterious Space. The losted moment
|
|
| |
drcrack | Дата: Четверг, 28 Июня 2018, 12:07 | Сообщение # 6 |
старожил
Сейчас нет на сайте
| Цитата если честно, просто с естетической точки зрения. по-моему наоборот это мега криво) лучший код это код простой как топор и понятный даже дошкольнику если нужен новый класс — делаешь новый класс либо добавляешь enum в старый для переключения режимов работы
Цитата Все почучуть складывается и в итоге тогда проект больше походит на профессиональный продукт, на гитхабе есть куча этих самых профессиональных продуктов, можешь поизучать их код
|
|
| |
orkons | Дата: Четверг, 28 Июня 2018, 12:10 | Сообщение # 7 |
частый гость
Сейчас нет на сайте
| Возможно пригодится: как реализован ХП-бар у мобов у меня https://gcup.ru/forum/59-100597-1 (на данный момент последнее видео в первом посте). Это вариант новичка, изучающего с# 2 месяца, но вдруг, так как там есть видео с детальным разбором кода.
|
|
| |
zaicev9797 | Дата: Четверг, 28 Июня 2018, 13:32 | Сообщение # 8 |
AbRaKaDaBrA
Сейчас нет на сайте
| да вроде не так уж и мудрено Код public int myVar = 42;
void OnGUI () { if (GUILayout.Button("Output Variable Value")) { int newVar = (int)this.GetType().GetField("myVar").GetValue(this); Debug.Log("Variable value: " + newVar); } }
проект Mysterious Space. The losted moment
Сообщение отредактировал zaicev9797 - Четверг, 28 Июня 2018, 13:32 |
|
| |
drcrack | Дата: Четверг, 28 Июня 2018, 14:04 | Сообщение # 9 |
старожил
Сейчас нет на сайте
| не мудрено но очень медленно как минимум GetField надо сохранить и не вызывать каждый раз но даже GetValue все равно в сотни раз тормознее чем просто чтение поля
|
|
| |
zaicev9797 | Дата: Четверг, 28 Июня 2018, 14:20 | Сообщение # 10 |
AbRaKaDaBrA
Сейчас нет на сайте
| ну и хелзбаров на экране единовременно не так уж много, так что не критично
проект Mysterious Space. The losted moment
|
|
| |
seaman | Дата: Четверг, 28 Июня 2018, 14:41 | Сообщение # 11 |
старожил
Сейчас нет на сайте
| > хелзбаров на экране единовременно не так уж много, так что не критично Зато OnGUI вызывается несколько раз за кадр...
|
|
| |
zaicev9797 | Дата: Четверг, 28 Июня 2018, 15:54 | Сообщение # 12 |
AbRaKaDaBrA
Сейчас нет на сайте
| а я не через гуай, такие примитивные вещи можно и самому из плейнов собирать, как мне кажется вполне себе вариант. так что мне побарабану) одна пустышка, один квад краем касается пустышки. В итоге если сохранить начальный скейл одной из осейи потом скейлить пустышку по этой оси, то нормльный бар получается.
проект Mysterious Space. The losted moment
Сообщение отредактировал zaicev9797 - Четверг, 28 Июня 2018, 15:56 |
|
| |
drcrack | Дата: Четверг, 28 Июня 2018, 15:57 | Сообщение # 13 |
старожил
Сейчас нет на сайте
| Цитата а я не через гуай, такие примитивные вещи можно и самому из плейнов собирать, как мне кажется вполне себе вариант. так что мне побарабану) одна пустышка, один плейн краем касается пустышки. В итоге если скейлить пустышку по одной из осей нормльный бар получается. т.е. вместо того чтобы просто сделать 1 Image и менять fillAmount простым однострочным скриптом ты вот эту всю схему замутил с рефлексией и каким-то плейнами? kostyl driven development
|
|
| |
zaicev9797 | Дата: Четверг, 28 Июня 2018, 17:14 | Сообщение # 14 |
AbRaKaDaBrA
Сейчас нет на сайте
| ну чтобы менять fillAmount мне бы всеравно пришлось бы мутить схему с рефлексией. Ну и никто не говорил что я вот прям узнал способ, и сразу пошел его юзать. Я лишь на заметку взял, что если вдруг мне придется насоздавать 100500 различных хелсбаров для 100500 разных переменных, то я таким методом воспользуюсь а зачем я из плейнов собираю это все - вполне понятно тсановится из:Цитата seaman ( ) Зато OnGUI вызывается несколько раз за кадр... Если мне придется делать что то более сложноое чем просто висящий сам по себе на экране бар, то я скорее всего это уже на UI буду делать.
проект Mysterious Space. The losted moment
|
|
| |
orkons | Дата: Четверг, 28 Июня 2018, 18:38 | Сообщение # 15 |
частый гость
Сейчас нет на сайте
| "а зачем я из плейнов собираю это все - вполне понятно тсановится из:" А события почему не пользуетесь, чтобы менять значения баров только когда меняется переменная хп?
|
|
| |
zaicev9797 | Дата: Четверг, 28 Июня 2018, 19:28 | Сообщение # 16 |
AbRaKaDaBrA
Сейчас нет на сайте
| чтобы использовать GUI надо сейчас сидеть вспоминать его все методы (за год службы благополучно все забывается и плюс когда начинали новый GUI вводить я только пощупать его успелл) . а чтобы отскейлить плейн по оси Х ничего вспоминать не надо короче говоря в данный момент вермени для меня это было гораздо проще
проект Mysterious Space. The losted moment
|
|
| |
seaman | Дата: Четверг, 28 Июня 2018, 21:25 | Сообщение # 17 |
старожил
Сейчас нет на сайте
| В 2019 обещают ввести и в редакторе новый UI. Надеюсь тогда совсем уберут OnGUI. Сделать бар на новом UI элементарно...
|
|
| |