Coroutine

Общие вопросы о Unity3D

Coroutine

Сообщение jet_aleks 05 янв 2017, 18:19

Подскажите как выыйти из ситуации.

В статике нужно запустить корутину, без нее все висит.


Синтаксис:
Используется csharp
[MenuItem("Assets/CreateTexture")]
        static void CreateTexture()
        {
   Read();
}
static void  Read()
        {
       
        textureTGA = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/Textures/fabric_new2VRayDiffuseFilterMap.tga", typeof(Texture2D)); // create texture
                Texture2D _tex = AssetDatabase.LoadAssetAtPath("Assets/Textures/fabric_new2VRayDiffuseFilterMap.png", typeof(Texture2D)) as Texture2D; // load texture                                                                                                                      
        texturePng = _tex;
        UpdateStaic();


        //_tex.LoadImage(textureTGA.EncodeToPNG());
        //_tex.Apply();
        //File.WriteAllBytes(Application.dataPath + "/Textures/fabric_new2VRayDiffuseFilterMap" + ".png", _tex.EncodeToPNG());
        //AssetDatabase.Refresh();

    }

    public static void UpdateStaic()
    {
        for (int y = 0; y<textureTGA.height; y++)
        {
            for (int x = 0; x< textureTGA.width; x++)
            {
                IEnumerator e = ConvertedAlphaChanel.Conv(ConvertTgaFromPng.textureTGA, ConvertTgaFromPng.texturePng, new Vector2(x,y));
                e.MoveNext();
            }
        }
    }
public class ConvertedAlphaChanel : MonoBehaviour
{

    public static IEnumerator Conv(Texture2D texture2d, Texture2D png,Vector2 coord)
    {
       
                Color color = new Color();
                color = (texture2d.GetPixel((int)coord.x, (int)coord.y).a < 128) ? new Color(128, 128, 128, 128) : texture2d.GetPixel((int)coord.x, (int)coord.y);
                 Debug.Log(color);
                png.SetPixel((int)coord.x, (int)coord.y,color);

                yield return  null;
           
    }
       
   
   
}

 


собственно что я делаю?=) Нужно преконвертить .tga ->png и в png убрать альфу. Бросил часть кода в которой проблемы возникли.
Toy Trophy:
_https://itunes.apple.com/us/app/toy-trophy/id1180494544?l=ru&ls=1&mt=8
_https://www.youtube.com/watch?v=f5MgMJn15KU
_https://www.youtube.com/watch?v=CZ0viTyf63g
jet_aleks
Старожил
 
Сообщения: 609
Зарегистрирован: 02 июл 2013, 22:28
Откуда: г.Харьков
Skype: jetsan8

Re: Coroutine

Сообщение Cr0c 05 янв 2017, 18:45

http://answers.unity3d.com/questions/14 ... rator.html
Тут говорят, что надо через инстанс монобеха запускать корутину. То есть внутри монобеха должна быть сама корутина.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Coroutine

Сообщение DbIMok 05 янв 2017, 20:56

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

Re: Coroutine

Сообщение jet_aleks 05 янв 2017, 22:37

Не совсем понял про конвертер. Вы хотите сказать что есть написаные конвертеры? Если да, тогда опишу проблему подробней. Мне нужно написать конвертер тга》пнг. Это я сделал.Еще нужно всю альфу переконвертить в серы color.a -128. Вот с этим и проблема, юнити зависает, нужно перещапускать.
Toy Trophy:
_https://itunes.apple.com/us/app/toy-trophy/id1180494544?l=ru&ls=1&mt=8
_https://www.youtube.com/watch?v=f5MgMJn15KU
_https://www.youtube.com/watch?v=CZ0viTyf63g
jet_aleks
Старожил
 
Сообщения: 609
Зарегистрирован: 02 июл 2013, 22:28
Откуда: г.Харьков
Skype: jetsan8

Re: Coroutine

Сообщение DbIMok 06 янв 2017, 06:25

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

Re: Coroutine

Сообщение seaman 08 янв 2017, 17:06

Ну как я понимаю у него большие расчеты и он хочет использовать корутины для распараллеливания, иначе "все висит".
Либо делать в другом потоке, либо не в редакторе. Я бы написал консольную утилитку.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Coroutine

Сообщение lol 09 янв 2017, 00:16

Убери Debug.Log(). Вывод в консоль можёт всё адски замедлить, что будет казаться, что зависло. Особенно, когда ты выводишь в цикле для каждого пикселя.

Ещё бывает, что при работе с картинками сам редактор начинает сыпать варнинги на каждую операцию по какой-то причине, которую ты не учел, что тоже можно подумать, что зависло всё. Можно это понять, если при зависании подрубить отладчик к процессу и приостановить его.
lol
Старожил
 
Сообщения: 508
Зарегистрирован: 15 ноя 2009, 10:48
Откуда: Москва

Re: Coroutine

Сообщение jet_aleks 09 янв 2017, 10:54

Ну как я понимаю у него большие расчеты и он хочет использовать корутины для распараллеливания, иначе "все висит".
Либо делать в другом потоке, либо не в редакторе. Я бы написал консольную утилитку.

Все правильно, но все организовать нужно в юнити, так как вся суть в том что бы максимально автоматизировать. В один клик собрать несколько префабов с настроенными материалами и подтянутыми текстурами, а текстур переимпорчены так как написал выше. Попробую поиграть с потоками=)
Toy Trophy:
_https://itunes.apple.com/us/app/toy-trophy/id1180494544?l=ru&ls=1&mt=8
_https://www.youtube.com/watch?v=f5MgMJn15KU
_https://www.youtube.com/watch?v=CZ0viTyf63g
jet_aleks
Старожил
 
Сообщения: 609
Зарегистрирован: 02 июл 2013, 22:28
Откуда: г.Харьков
Skype: jetsan8

Re: Coroutine

Сообщение seaman 09 янв 2017, 11:36

Все правильно, но все организовать нужно в юнити, так как вся суть в том что бы максимально автоматизировать.

Ну а кто мешает из Юнити открыть утилиту, сделать в ней что надо и автоматом закрыть по завершении задачи. Ну да - мигнет консольное окно, но думаю это не страшно - написать в документации что так и надо, чтобы не пугались и дождались результата.
Открывается в одну строчку. Например - открыть нотпад и в нем сразу файлик "1.txt":
Синтаксис:
Используется csharp
using UnityEditor;
using UnityEngine;
public class OpenNotepad : EditorWindow
{
    [MenuItem("Window/Open Notepad")]
    static void Init()
    {
        Application.OpenURL("d:\\Utils\\NotepadPP\\notepad++.exe 1.txt");
    }
}

Аналогично утилите можно передать параметром путь к файлу для обработки.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Coroutine

Сообщение jet_aleks 09 янв 2017, 12:22

а как работать с текстурой в консольном приложении, так же как и в юнити. Там свои апи есть?
Toy Trophy:
_https://itunes.apple.com/us/app/toy-trophy/id1180494544?l=ru&ls=1&mt=8
_https://www.youtube.com/watch?v=f5MgMJn15KU
_https://www.youtube.com/watch?v=CZ0viTyf63g
jet_aleks
Старожил
 
Сообщения: 609
Зарегистрирован: 02 июл 2013, 22:28
Откуда: г.Харьков
Skype: jetsan8

Re: Coroutine

Сообщение seaman 09 янв 2017, 12:53

Подключаешь System.Drawing. Создаешь Bitmap из файла. Дальше GetPixel/SetPixel В конце сохраняешь Bitmap в файл
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Coroutine

Сообщение jet_aleks 09 янв 2017, 15:01

спасибо. получилось. Только не консоле, не работает с System.Drawing. На форме сделал
Toy Trophy:
_https://itunes.apple.com/us/app/toy-trophy/id1180494544?l=ru&ls=1&mt=8
_https://www.youtube.com/watch?v=f5MgMJn15KU
_https://www.youtube.com/watch?v=CZ0viTyf63g
jet_aleks
Старожил
 
Сообщения: 609
Зарегистрирован: 02 июл 2013, 22:28
Откуда: г.Харьков
Skype: jetsan8

Re: Coroutine

Сообщение DbIMok 09 янв 2017, 16:15

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

Re: Coroutine

Сообщение jet_aleks 09 янв 2017, 17:14

круто. :ymhug: буду разбираться!!!
Мне просто много работать с текстурой надо. Инвертировать каналы, затирать альфу, и тому подобное. Буду изучать материал. Огромное спасибо! (3A4OT)
Toy Trophy:
_https://itunes.apple.com/us/app/toy-trophy/id1180494544?l=ru&ls=1&mt=8
_https://www.youtube.com/watch?v=f5MgMJn15KU
_https://www.youtube.com/watch?v=CZ0viTyf63g
jet_aleks
Старожил
 
Сообщения: 609
Зарегистрирован: 02 июл 2013, 22:28
Откуда: г.Харьков
Skype: jetsan8

Re: Coroutine

Сообщение DbIMok 11 янв 2017, 19:03

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

След.

Вернуться в Общие вопросы

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

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