Построчная отладка

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

Построчная отладка

Сообщение Tolking 31 окт 2009, 00:17

Как определить я в коде наглючил и не рисуется картинка, или onGUI не выполняется?

Код: Выделить всё
void onGUI()
    {
        GUI.DrawTexture(TextureRect(tex), tex);
        RenderGUI();
    }
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2718
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Построчная отладка

Сообщение Neodrop 31 окт 2009, 02:05

TextureRect(tex) это ж размер текстуры, а не экранные координаты.

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

Re: Построчная отладка

Сообщение Tolking 31 окт 2009, 02:29

TextureRect(tex) возвращает Rect(0,0, tex.width, tex.height), есть вариант TextureRect(x,y,tex) вернет Rect(x,y, tex.width, tex.height) - мое
Класс наследован от наследника и онгуи не выполняется.
А главное OnGUI, а не onGUI

RenderGui - Собственное

Давольно много перелапатил доков, и как-то не встретил... Можно программно assets создавать? Не геймобжекты, а Асеты? Типа сделать свой импорт текстуры? Или Визардом создать программно текстуру и ее пихнуть в асеты?
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2718
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Построчная отладка

Сообщение Neodrop 31 окт 2009, 16:25

Ха! Я сразу не заметил. Ты же имя функции неправильно написал. Должно быть не onGUI а OnGUI

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

Re: Построчная отладка

Сообщение Tolking 02 ноя 2009, 13:28

Да только там и копаюсь. Для работы с Asset нужен класс AssetDatabase. Теперь мне, в меру моей ограничености, нехватает возможности сохранить программно созданную текстуру.

На вот эту строку жудко ругается!
Color[] pic = bmp.GetPixels((int)Pos.width * i, 0, (int)Pos.width, (int)Pos.height);

говорит:
TargetInvocationException: Exception has been thrown by the target of an invocation.
Скрытый текст:
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000]
System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000]
UnityEditor.HostView.Invoke (System.String methodName)
UnityEditor.HostView.OnGUI () at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000]
System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000]
UnityEditor.ScriptableWizard.OnGUI ()
UnityEngine.Texture2D.GetPixels (Int32 x, Int32 y, Int32 blockWidth, Int32 blockHeight)
GUIButton..ctor (UnityEngine.Texture2D bmp, Int32 frame) (at Assets\Assets\GameGUI.cs:18)
GameGUI.AddButton (UnityEngine.Texture2D tex, Int32 frame) (at Assets\Assets\GameGUI.cs:36)


Есть подозрение, что это из-за несоответствия типов, но что хочет непонятно!

Что я хочу:
Код: Выделить всё
public GUIButton(Texture2D bmp,int frame){
        Pos.width = bmp.width / frame;
        Pos.height = bmp.height;
        for (int i = 0; i < frame-1; i++)
       {
            Texture2D tmp = new Texture2D((int)Pos.width, (int)Pos.height);
            Color[] pic = bmp.GetPixels((int)Pos.width * i, 0, (int)Pos.width, (int)Pos.height);
            tmp.SetPixels(pic);
            tex.Add(tmp);
        }


Причем хочу я это в Визарде. Т.е. чтобы картинка на фреймы билась не при запуске, а на этапе создания ГУИ.
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2718
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Построчная отладка

Сообщение Tolking 02 ноя 2009, 15:14

Вроде заставил работать - сделал приваты пабликами.

Видимо я что-то упускаю.
Код: Выделить всё
public class GUIButton:GUIElement{
    public int frame;
    public List<Texture2D> tex;

    public GUIButton(Texture2D bmp,int fr){
        Bmap = bmp;
        frame = fr;
        Pos.width = bmp.width / frame;
        Pos.height = bmp.height;
        tex = new List<Texture2D>();

        for (int i = 0; i < frame; i++)
        {
            Texture2D tmp = new Texture2D((int)Pos.width, (int)Pos.height);
            tex.Add(tmp);
            tmp.SetPixels(Bmap.GetPixels((int)Pos.width * i, 0, (int)Pos.width, (int)Pos.height));
            tmp.Apply();
        }
    }

    public override void Render()
    {
        GUI.DrawTexture(Pos, tex[0]);
    }
}


Если public List<Texture2D> tex; - то работает
Если private List<Texture2D> tex; - то не работает, а почему? По смыслу-то не нужно иметь tex пабликом.
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2718
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Построчная отладка

Сообщение Tolking 02 ноя 2009, 16:59

Кто нибуть знает как сделать чтобы нумератор в инспекторе можно было выбрать из списка, а не назначить значение?
Код: Выделить всё
public enum PanelType
{
    Clamp =1,
    Scale =2,
    Repeat=3
}


Чтобы в инспекторе не 1,2,3 вводить, а Clamp, Scale, Repeat?
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2718
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Построчная отладка

Сообщение ffinder 02 ноя 2009, 17:32

попробуй без указания чисел, т.е. просто
Код: Выделить всё
public enum PanelType {Clamp, Scale, Repeat}

ну и потом
Код: Выделить всё
public PanelType panelType = PanelType.Clamp;
ffinder
UNITрон
 
Сообщения: 192
Зарегистрирован: 26 мар 2009, 17:35
  • Сайт

Re: Построчная отладка

Сообщение Tolking 02 ноя 2009, 17:42

Не! В коде все путем, не путем в инспекторе. Как-то нехочется через SerializedProperty делать...
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2718
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Построчная отладка

Сообщение Neodrop 02 ноя 2009, 18:39

Попробуй так :

Код: Выделить всё
    public enum int PanelType
    {
        Clamp =1,
        Scale =2,
        Repeat=3
    }


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

Re: Построчная отладка

Сообщение Tolking 04 ноя 2009, 12:09

Хочу сделать визуальный редактор ГУИ. Пошлите меня... :)

Есть картинка. Как в режиме редактора выводить ее?
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2718
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Построчная отладка

Сообщение gnoblin 04 ноя 2009, 12:31

Чтобы в окне Game до нажатия Play выводился гуи, перед названием класса напиши [ExecuteInEditMode].
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Построчная отладка

Сообщение Neodrop 04 ноя 2009, 13:55

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

Re: Построчная отладка

Сообщение gnoblin 05 ноя 2009, 01:21

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

Re: Построчная отладка

Сообщение Neodrop 05 ноя 2009, 02:13

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

След.

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

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

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