ссылка на переменную в инспекторе (адрес/указатель)

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

ссылка на переменную в инспекторе (адрес/указатель)

Сообщение Zaic 28 июн 2018, 11:26

Предположим есть у меня какой то объект. Есть у него две переменных health и fuel и может потом я захочу к нему добавить еще shield.
И есть у меня два хелзбара для health и для fuel и потом я еще возможно захочу добавить бар для shield.
Мне очень лень писать практически один и тот же скрипт для каждого из хелзбаров, и менять там лишь только название переменной которую он берет из моего объекта.
Мне бы хотелось просто указывать в инспекторе адрес (ну типа как в плюсах к переменной можно либо по адресу либо по указателю добраться) или мб. имя переменной к которой конкретный хелзбар будет оращаться, т.к. в теории еще малоли для каких параметров кроме этих трех я захочу сделать бары, но алгоритм независимо от этого останется тем же.
Есть способ это сделать?
кто здесь, как здесь, почему здесь. ниче не знаю, это не я
http://unity3d.ru/distribution/viewtopic.php?f=17&t=18987
Аватара пользователя
Zaic
Старожил
 
Сообщения: 758
Зарегистрирован: 18 июл 2013, 23:13
Откуда: Отсюда
Skype: У меня нет скайпа
  • Сайт

Re: ссылка на переменную в инспекторе (адрес/указатель)

Сообщение 1max1 28 июн 2018, 11:58

Не совсем понял что ты хочешь, но, у любого объекта, на котором висит скрипт можно, можно получить ссылку на этот самый скрипт и соответственно доступ к полям.

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

void Start()
{
    MyScript script = obj.GetComponent<MyScript>();
    int health = script.health;
}
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: ссылка на переменную в инспекторе (адрес/указатель)

Сообщение Zaic 28 июн 2018, 12:28

нет, не правильно поняли. Суть в том что я хочу просто написать универсальный скрипт для хелзбара, в котором достаточно было бы просто указать ссылку на переменную не зависимо от того как называется эта переменная, из которой он будет брать значения, чтобы не создавать отдельно скрипты для каждого вида хелзбаров для рарзных параметров. В плюсах этом можно сделать с помощью передачи указателя на переменную или адреса пременной.
кто здесь, как здесь, почему здесь. ниче не знаю, это не я
http://unity3d.ru/distribution/viewtopic.php?f=17&t=18987
Аватара пользователя
Zaic
Старожил
 
Сообщения: 758
Зарегистрирован: 18 июл 2013, 23:13
Откуда: Отсюда
Skype: У меня нет скайпа
  • Сайт

Re: ссылка на переменную в инспекторе (адрес/указатель)

Сообщение 1max1 28 июн 2018, 12:52

Сделай перечисление типа:

Синтаксис:
Используется csharp
enum Type
{
    HP,Fuel,Shield
}


Потом делай свой универсальный скрипт для своего бара, а в инспекторе когда раскидаешь скрипты по барам, поставишь нужный тип:

Синтаксис:
Используется csharp
public Type type;

void Update()
{
    switch (type)
    {
        case Type.HP: bla bla bla; break;
        // и т.д.
    }
}
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: ссылка на переменную в инспекторе (адрес/указатель)

Сообщение Zaic 28 июн 2018, 13:27

а моежт есть какой нибудь метод для поиска поля по имени в каком либо компоненте?
кто здесь, как здесь, почему здесь. ниче не знаю, это не я
http://unity3d.ru/distribution/viewtopic.php?f=17&t=18987
Аватара пользователя
Zaic
Старожил
 
Сообщения: 758
Зарегистрирован: 18 июл 2013, 23:13
Откуда: Отсюда
Skype: У меня нет скайпа
  • Сайт

Re: ссылка на переменную в инспекторе (адрес/указатель)

Сообщение Zaic 28 июн 2018, 13:31

а собственно вот вроде не так уж и сложно
Синтаксис:
Используется csharp
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);
    }
}
кто здесь, как здесь, почему здесь. ниче не знаю, это не я
http://unity3d.ru/distribution/viewtopic.php?f=17&t=18987
Аватара пользователя
Zaic
Старожил
 
Сообщения: 758
Зарегистрирован: 18 июл 2013, 23:13
Откуда: Отсюда
Skype: У меня нет скайпа
  • Сайт

Re: ссылка на переменную в инспекторе (адрес/указатель)

Сообщение Tolking 28 июн 2018, 15:45

ищи reflection... но лучше использовать interface.
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2714
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула


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

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

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