Определение параметра из другого gameObject.

Программирование на Юнити.

Определение параметра из другого gameObject.

Сообщение Sayami 15 сен 2017, 20:56

Всем привет. Есть определенная проблема, и относится она больше к синтаксису языка C# чем к Unity.

Есть класс "Level", внутри которого присутствует публичная строковая переменная Type. Когда скрипт вешается на игровой объект я вручную присваиваю значение данной переменной в инспекторе.

Далее в классе Level имеется метод setvalue внутри которого я присваиваю переменной "value" значение, которое я беру из переменной другого игрового объекта.

Проблема в том, что я не знаю как правильно подставить значение переменной Type вконец оператора GetComponent<xxx>().

Далее проблемный кусочек кода:
Синтаксис:
Используется csharp
        void setvalue () {
                value = hero.GetComponent<Parametrs>().<Type>;
        }
 


Ругается не пойми на что. Компилятор ругается на левой треугольной скобочке от Type и на " ; " в конце строки.
Вместо Type планируется выбирать одну из переменных типа float: HP, MP или CP.
Стоит упомянуть что переменная Type строковая, а переменные value и переменная из объекта hero типа float.

Надеюсь на вашу помощь.
Sayami
UNец
 
Сообщения: 3
Зарегистрирован: 15 сен 2017, 20:38

Re: Определение параметра из другого gameObject.

Сообщение samana 15 сен 2017, 21:35

Что-то запутались мысли мои.
Вы говорите, что у вас есть класс Level с переменной string Type и float value и методом setvalue в котором вы хотите задать значение для переменной value. Но причём здесь следующее?

Sayami писал(а):я не знаю как правильно подставить значение переменной Type вконец оператора GetComponent<xxx>().


Почему вы пытаетесь из компонента Parametrs вытащить переменную Type, которой там нет, ведь она принадлежит классу Level ?

Все публичные свойства и методы доступны через оператор точки
GetComponent<xxx>().свойство
GetComponent<xxx>().метод
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Определение параметра из другого gameObject.

Сообщение Sayami 16 сен 2017, 07:45

samana писал(а):Что-то запутались мысли мои.
Вы говорите, что у вас есть класс Level с переменной string Type и float value и методом setvalue в котором вы хотите задать значение для переменной value. Но причём здесь следующее?

Sayami писал(а):я не знаю как правильно подставить значение переменной Type вконец оператора GetComponent<xxx>().


Почему вы пытаетесь из компонента Parametrs вытащить переменную Type, которой там нет, ведь она принадлежит классу Level ?

Все публичные свойства и методы доступны через оператор точки
GetComponent<xxx>().свойство
GetComponent<xxx>().метод


Вы правильно говорите. В Parametrs нету переменной Type. Там есть только параметры HP, MP и CP.
Я хочу сделать так, чтобы не писать з раза if (...hp) {xxx}, if (...mp){xxx} и т.д. Я просто хочу переменной "Type" сообщать команде GetComponent какую именно переменную необходимо взять.
Существует ли необходимый синтаксис в C# чтобы провернуть такую задачу, или все таки придется растягивать код и писать все через IF?
Sayami
UNец
 
Сообщения: 3
Зарегистрирован: 15 сен 2017, 20:38

Re: Определение параметра из другого gameObject.

Сообщение seaman 16 сен 2017, 11:20

Все равно Вам нужно будет проверять Type. Либо if-ами, либо switch.
Ну или как-то круто менять архитектуру. Как не скажешь без полного понимая задачи.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Определение параметра из другого gameObject.

Сообщение Sayami 16 сен 2017, 14:20

seaman писал(а):Все равно Вам нужно будет проверять Type. Либо if-ами, либо switch.
Ну или как-то круто менять архитектуру. Как не скажешь без полного понимая задачи.

Спасибо за ответы) Обтыкался if-ами. Работать так будет)
Sayami
UNец
 
Сообщения: 3
Зарегистрирован: 15 сен 2017, 20:38


Вернуться в Скрипты

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7