Пятница, 22 Ноября 2024, 05:24

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
IEnumerator в static функции
robertonoДата: Понедельник, 29 Июля 2013, 20:42 | Сообщение # 1
Чокнутый Кот
Сейчас нет на сайте
Есть такой код для системы дождя:

Всё работало, пока я не создал отдельный скрипт для контролирования дождём и сделал функцию Rain статичной.

Дело в том что я из скрипта WeatherController вызываю
RainSystem.Rain(RainRate);
если Rain не статик то он компилить код отказывается ( потому что не статик smile ).
Но если сделать Rain статик, то вызвать StartCoroutine EditVal не получается, так как она тоже не статик. Но IEnumerator сделать static невозможно. Как быть? Что делать?
Не хотелось бы заменять огромный участок кода или городить ещё 1 целый скрипт для плавного изменения значения переменной.
KiraДата: Понедельник, 29 Июля 2013, 21:12 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
Скинь ошибку из редактора, когда Райн не статик.
И 2е. Скрипт висит на го в сцене?


Unity3d разработчик на С#. Лучшее спасибо + в репу.
"Безумие: делать одно и то же снова и снова, и ждать при этом разных результатов".
"Человек, который никогда не ошибался никогда не пробовал ничего нового".
"Если человек может спокойно управлять автомобилем во время поцелуя красивой девушки, значит он уделяет поцелую недостаточно внимания”. Альберт Эйнштейн


Сообщение отредактировал Kira - Понедельник, 29 Июля 2013, 21:13
robertonoДата: Понедельник, 29 Июля 2013, 22:17 | Сообщение # 3
Чокнутый Кот
Сейчас нет на сайте
Цитата (Kira)
Скрипт висит на го в сцене?

Да, скрипт висит на пустом ГО.
Kira, а что делает public если писать его в public void myVoid ?
Какую роль тут играет public ? Я знаю что он делает с переменными. А с функцией что будет?

Добавлено (29.07.2013, 22:16)
---------------------------------------------
Kira,

Код
Assets/Scripts/WeatherController.cs(45,20): error CS0120: An object reference is required to access non-static member `RainSystem.Rain(float)'

Добавлено (29.07.2013, 22:17)
---------------------------------------------
далее, делаю void Rain в public static void Rain
и тогда становится такая ошибка:

Код
Assets/Scripts/Rain System/RainSystem.cs(22,9): error CS0120: An object reference is required to access non-static member `UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)'
seamanДата: Понедельник, 29 Июля 2013, 23:11 | Сообщение # 4
старожил
Сейчас нет на сайте
1. Находишь объект, на котором RainSystem
2. Получаешь скрипт RainSystem с помощью GetComponent<RainSystem >()
RainSystem rs = GetComponent<RainSystem >();
3. Вызываешь функцию Rain в нем
rs.Rain(RainRate)
И не надо плодить статику без нужды.
robertonoДата: Понедельник, 29 Июля 2013, 23:39 | Сообщение # 5
Чокнутый Кот
Сейчас нет на сайте
seaman, попробуем...
PocifikДата: Вторник, 30 Июля 2013, 00:41 | Сообщение # 6
участник
Сейчас нет на сайте
Цитата (robertono)
Какую роль тут играет public ? Я знаю что он делает с переменными. А с функцией что будет?

Тоже самое что и с переменной, какую еще роль может играть палбик.
robertonoДата: Вторник, 30 Июля 2013, 00:42 | Сообщение # 7
Чокнутый Кот
Сейчас нет на сайте
Pocifik, функция же не будет отображаться в инспекторе из за паблика)

Добавлено (30.07.2013, 00:42)
---------------------------------------------
seaman, работает . Спасибо smile
+ каждому участнику топика

PocifikДата: Вторник, 30 Июля 2013, 00:45 | Сообщение # 8
участник
Сейчас нет на сайте
Цитата (robertono)
Pocifik, функция же не будет отображаться в инспекторе из за паблика)

Паблик не для этого нужен, ну разве что в юнити. Я брал C# в целом.


Сообщение отредактировал Pocifik - Вторник, 30 Июля 2013, 00:45
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг