Объявление локальной переменной в методе - error CS1002

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

Объявление локальной переменной в методе - error CS1002

Сообщение RefractoR 06 июл 2010, 12:30

Использую отдельный класс для хранения глобальных переменных. В нем есть такой метод:
Синтаксис:
Используется csharp
public static Color ColourBlink (Color color1, Color color2, float speed) {
               
        private float tm += Time.deltaTime;

        return Color.Lerp(color1, color2, Mathf.PingPong(tm * speed, 1.0f));

}
 

Постоянно получаю ошибку error CS1002: Expecting `;' и ссылается на ту линию, где регистрирую локальную переменную. Как это объяснить?
RefractoR
UNIт
 
Сообщения: 50
Зарегистрирован: 05 ноя 2009, 16:31
Откуда: Краснодар
  • ICQ

Re: Объявление локальной переменной в методе - error CS1002

Сообщение Zaicheg 06 июл 2010, 12:43

Я не особо разбираюсь в этих ваших программированиях, но прибавлять значение к переменной, которой ещё не присвоено значение — это не что-то странное? По-моему, надо private float tm = Time.deltaTime;
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Объявление локальной переменной в методе - error CS1002

Сообщение RefractoR 06 июл 2010, 12:44

Да, до этого я сначала инициализировал переменную, потом прибавлял, но эффект тот же. Ничего не понимаю...
RefractoR
UNIт
 
Сообщения: 50
Зарегистрирован: 05 ноя 2009, 16:31
Откуда: Краснодар
  • ICQ

Re: Объявление локальной переменной в методе - error CS1002

Сообщение DbIMok 06 июл 2010, 13:07

float tm = Time.deltaTime;
это то к чему вы стремитесь )
какой эффект вы хотите получить? локальная переменная будет жить только локально, сколько private не пиши. += при объявлении не имеет смысла.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Объявление локальной переменной в методе - error CS1002

Сообщение gnoblin 06 июл 2010, 13:10

Это объясняется тем, что в строке private float tm += Time.deltaTime;
бред :)
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Объявление локальной переменной в методе - error CS1002

Сообщение RefractoR 06 июл 2010, 13:34

gnoblin, ну конечно бред, особенно когда посты не читаем. Я же писал, что пробовал инициализировать сначала, а потом прибавлять, но эффект тот же. Мне не нужно присваивать, мне нужно прибавлять, т.к это таймер для работы Mathf.PingPong. Здесь можно просто использовать Time.time, но мне нужно обнулять переменную, т.е инициализировать снова, потому и делаю так.
RefractoR
UNIт
 
Сообщения: 50
Зарегистрирован: 05 ноя 2009, 16:31
Откуда: Краснодар
  • ICQ

Re: Объявление локальной переменной в методе - error CS1002

Сообщение RefractoR 06 июл 2010, 13:37

Даже если забыть про назначение функции и сделать так, то ошибка продолжает выводиться. Так понятней?
Синтаксис:
Используется csharp
public static Color ColourBlink (Color color1, Color color2, float speed) {
               
        private float tm;

        return Color.Lerp(color1, color2, Mathf.PingPong(tm * speed, 1.0f));

}
 
RefractoR
UNIт
 
Сообщения: 50
Зарегистрирован: 05 ноя 2009, 16:31
Откуда: Краснодар
  • ICQ

Re: Объявление локальной переменной в методе - error CS1002

Сообщение DbIMok 06 июл 2010, 14:34

что нам должно быть понятней. бред продолжается. бред уже само название темы. что обозначает private? то что переменная доступна только методам класса. все переменные объявленные в функции, доступны только внутри нее.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Объявление локальной переменной в методе - error CS1002

Сообщение RefractoR 06 июл 2010, 17:08

Ладно, закрывайте тему. Разберусь сам или на другом ресурсе. Всем спасибо
RefractoR
UNIт
 
Сообщения: 50
Зарегистрирован: 05 ноя 2009, 16:31
Откуда: Краснодар
  • ICQ

Re: Объявление локальной переменной в методе - error CS1002

Сообщение Zaicheg 06 июл 2010, 17:17

Рефрактор, суть в следующем (если я правильно понял).
Вы объявили переменную внутри метода. Она по определению не может быть доступна где-то вне этого метода.
Значит, модификаторы уровня доступа (в частности, private) при объявлении этой переменной не имеют смысла. Поэтому они рассматриваются компилятором как синтаксические ошибки. В частности, автодополнение не предлагает эти модификаторы в своих вариантах (попробуйте).
Объявляйте свою переменную просто "float tm"
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Объявление локальной переменной в методе - error CS1002

Сообщение Zaicheg 06 июл 2010, 17:20

Также констукция вида "float tm += Time.deltaTime;" бессмыслена и является ошибкой. Фактически, Вы прибавляете число к значению несуществующей переменной. И даже если компилятор бы переваривал эту конструкцию, то вы бы получали значение, тождественное предложенному Вам " float tm = Time.deltaTime;"

Если я тут что-то криминальное сказал — Дымок поправит, как тру-программист B-)
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Объявление локальной переменной в методе - error CS1002

Сообщение DbIMok 06 июл 2010, 17:29

конечно ваша раздраженная реакция на попытки помочь здесь никого не радует. если вы и впредь будете так себя вести, то в лучшем случае ваши вопросы будут игнорироваться. надо быть спокойнее и дружелюбнее, не упорствовать в своих заблуждениях, обвиняя других в непонимании. правильный путь - написать я хочу сделать так-то, как это сделать лучше.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Объявление локальной переменной в методе - error CS1002

Сообщение RefractoR 06 июл 2010, 17:41

раздражение? извините, конечно, но естественно мне неприятно, когда мои посты называют бредом. При объявлении без значения компилятор ругается на ссылку на несуществующую переменную. А если инициализировать со значением (т.е float tm = 0.0f;), то не происходит изменение переменной, т.к функция вызывается каждый кадр. Я не знаю, как сделать инициализацию переменной (естественно локальной, т.к внутри метода и я знаю что значит private, а использовал не там где надо из-за того, что перепробовал все способы и думал, что в этом проблема)
RefractoR
UNIт
 
Сообщения: 50
Зарегистрирован: 05 ноя 2009, 16:31
Откуда: Краснодар
  • ICQ

Re: Объявление локальной переменной в методе - error CS1002

Сообщение Zaicheg 06 июл 2010, 17:54

Напишит, что Вы хотите получать в переменной tm (и для чего), и мы решим эту проблему.

Если вам нужно каждый кадр прибавлять к tm некое значение Time.deltaTime, то объявляйте (создавайте) переменную вне метода, а в методе уже прибавляйте Time.deltaTime.
Если вы хотите каждый кадр получать в tm значение равное Time.deltaTime, то делайте tm = Time.deltaTime.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Объявление локальной переменной в методе - error CS1002

Сообщение RefractoR 06 июл 2010, 18:03

Создание переменной вне метода будет работать..но мне нужно обнулять этот таймер при первом вызове функции. Мне надо каким-то образом внутри метода прописать инициализацию - часть, которая только единожды будет вызываться. Сделать что-то типа Start в монобехе, но внутри метода
RefractoR
UNIт
 
Сообщения: 50
Зарегистрирован: 05 ноя 2009, 16:31
Откуда: Краснодар
  • ICQ

След.

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

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

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