C# и yield

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

C# и yield

Сообщение TimmyMulla 16 апр 2010, 16:15

Человеки, люди! (с)

Мне надо загрузить объект с интернета (использую WWW) и запихнуть его в переменную.
Проблема в том, что использование yield в не IEnumerator'e не выходит, а IEnumerator не может возвращать значения (любой return вызывает ошибку).
Как это делается? ) Забадался уже я. Помогите плз )

Вот что я предполагал написать (и оно не работает):

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

public GameObject GetInstance(string name)
{
     WWW _www = new WWW("http://bla-bla-bla/" + name + "blablabla");
     yield return _www;
     return http://www.assetBundle.mainAsset as GameObject;
}
 


Говорит yield мона только в iterator'е юзать.

Для примера, код JS из справки:

Синтаксис:
Используется javascript
function Start () {
    var www = new WWW ("http://myserver/myBundle.unity3d");
    yield www;
    // Get the designated main asset and instantiate it.
    Instantiate(http://www.assetBundle.mainAsset);
}
 
Аватара пользователя
TimmyMulla
UNец
 
Сообщения: 47
Зарегистрирован: 13 фев 2010, 10:07
Откуда: Екатеринбург

Re: C# и yield

Сообщение Zaicheg 16 апр 2010, 16:34

void Met1(){
StartCoroutine(Load()); }

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

Re: C# и yield

Сообщение TimmyMulla 16 апр 2010, 17:07

Видать вопрос я криво сформулировал.
Мне нужно чтобы функция возвращала загруженный объект.

что-то тпа:
GameObject _newLoadedObject = GetInstance("object_name");
Аватара пользователя
TimmyMulla
UNец
 
Сообщения: 47
Зарегистрирован: 13 фев 2010, 10:07
Откуда: Екатеринбург

Re: C# и yield

Сообщение gnoblin 16 апр 2010, 21:10

Код: Выделить всё
GameObject _newLoadedObject = Instantiate(my_loaded_object) as GameObject;
?
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: C# и yield

Сообщение TimmyMulla 17 апр 2010, 09:55

Чет я по-хоже совсем запутал общественность :-??

Пытаюсь еще раз сформулировать вопрос )

Как реализовать на шарпе функцию, которая загружает из WWW объект/текстуру/текст и возвращает загруженную инфу в качестве результата. Чтобы ей можно было воспользоваться как-то так:

GameObject _newLoadedObject = GetInstance("name") as GameObject; (в прошлом посте неправильно написал)

Где:
_newLoadedObject - переменная
GetInstance("name") - непосредственно функция.

Думаю в сторону потоков. Сегодня попробую... Но может у кого есть мысли как проще?
Аватара пользователя
TimmyMulla
UNец
 
Сообщения: 47
Зарегистрирован: 13 фев 2010, 10:07
Откуда: Екатеринбург

Re: C# и yield

Сообщение Neodrop 17 апр 2010, 11:23

Для этого есть коратины.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: C# и yield

Сообщение TimmyMulla 17 апр 2010, 15:34

Да, я с них и начал. Только у меня как-то с ними не выходит.
Корутина должна быть IEnumerator. А с этим делом не получается вернуть, например, GameObject или там List или еще чего.
Или я балбес и не правильно это делаю (как делаю показано в первом посте).

Почти допинал с потоками... Но как-то совсем громоздко получается... Ладно, всем спасибо, буду ковыряться дальше..
Аватара пользователя
TimmyMulla
UNец
 
Сообщения: 47
Зарегистрирован: 13 фев 2010, 10:07
Откуда: Екатеринбург

Re: C# и yield

Сообщение Neodrop 17 апр 2010, 19:17

"Не выходит" не значит, что они не работают. Что вам мешает передать полученный объект в внешнюю переменную или использовать дилегированный метод? :-?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт


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

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

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