Массив картинок через веб (Решено)

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

Массив картинок через веб (Решено)

Сообщение ][@FF 24 апр 2011, 17:59

Доброго дня. Сразу перейду к коду.

Синтаксис:
Используется csharp
    public GUIStyle InvisibleStyle; // прозрачный стиль окна

    float LeftWindowX; // размер окна
    float LeftWindowY;
    float HPict; // размер картинок
    float WPict;
    float HPictSumm;
    int NPict; // количество картинок

    bool PictBool;
    Texture2D[] pict; // массив картинок

// здесь я заполняю массив картинками если PictBool тру (чтобы не зацикливался, а сделал только раз за вызов )
IEnumerator GiveMePicts()
    {
        if (PictBool == true)
        {
            while (Input.GetMouseButton(0))
            {
                    // в данном случае заполняю первую ячейку массива первой картинкой
                    WWW www = new WWW("http://192.168.22.146/tempery/" + name + "_0.jpg");
                    yield return www;
                    pict[0] = http://www.texture;
                    PictBool = false;
                   MainWindowInfoShowBool = true; // отображаем главное окно
                   Time.timeScale = 0f; // тормозим время и задний фон
                   Screen.lockCursor = false; // разблокируем курсор
            }
        }
    }

// на нажатие ЛКМ вызываю GiveMePicts и заполняю массив
 void OnMouseDrag()
    {
        StartCoroutine(GiveMePicts());
        PictBool = true;
    }

//рисуем главное окно в котором будут кнопки/картинки
    void OnGUI()
    {
        if (MainWindowInfoShowBool)
        {
            GUI.Window(1, new Rect((Screen.width / 2 - (RightTopWindowX + LeftWindowX) / 2), (Screen.height / 2 - LeftWindowY / 2), LeftWindowX, LeftWindowY), LeftWindow, "", InvisibleStyle);
        }
    }

 void LeftWindow(int windowID)
    {
        GUI.BringWindowToFront(1);//окно на передний план
        LeftWindowX = 168;//размеры окна
        LeftWindowY = 569;

        HPict = 160;//размер картинки
        WPict = 120;
        HPictSumm = 20;
        NPict = 5;//количество картинок/кнопок

        GUI.skin = VerticalScrollBarMySkin;//стиль ползунка в полосе прокрутки
        //поле с полосой прокрутки именно в нем мы создаем наши кнопки/картинки
        LeftMenuPictScroll = GUI.BeginScrollView(new Rect(0, 0, (LeftWindowX - 10), (LeftWindowY)), LeftMenuPictScroll, new Rect(0, 0, WPict + 20, (HPict * NPict + HPictSumm + 10)));
        GUI.skin = null;
        //создаем наши кнопки
            for (int i = 0; i <= NPict-1; i++)
            {
               
                GUI.skin.customStyles[0].hover.background = pict[0];
                GUI.skin.customStyles[0].normal.background = pict[0];
                GUI.skin.customStyles[0].active.background = pict[0];
                if (GUI.Button(new Rect((LeftWindowX - LeftWindowX / 2 - WPict / 2 - 10), HPictSumm, WPict, HPict - 10), "", GUI.skin.customStyles[0]))
                {
                       //пока что ничего не делаю, просто создаю кнопки
                }
                HPictSumm = HPictSumm + HPict;
            }
        GUI.EndScrollView();
    }



NullReferenceException: Object reference not set to an instance of an object
InfoWindow.LeftWindow (Int32 windowID) (at Assets/scripts/InfoWindow.cs:112)
UnityEngine.GUI+_Window.Do () (at E:/BuildAgent/work/71ca6fec1b41cc30/Runtime/Export/Generated/GUI.cs:1152)
UnityEngine.GUI.EndWindows (UnityEngine.IDList idlist) (at E:/BuildAgent/work/71ca6fec1b41cc30/Runtime/Export/Generated/GUI.cs:1402)
UnityEngine.GUIUtility.EndGUI (Int32 doLayout, Int32 doWindows, UnityEngine.IDList idlist) (at E:/BuildAgent/work/71ca6fec1b41cc30/Runtime/Export/Generated/GUIUtility.cs:353)

на 112 строчке
GUI.skin.customStyles[0].hover.background = pict[0];

что я делаю не так?
Последний раз редактировалось ][@FF 24 апр 2011, 19:13, всего редактировалось 1 раз.
Аватара пользователя
][@FF
UNIт
 
Сообщения: 62
Зарегистрирован: 24 фев 2011, 20:02
  • ICQ

Re: Массив картинок

Сообщение Zaicheg 24 апр 2011, 18:10

Либо
GUI.skin.customStyles[0] == null
либо
pict[0] == null

Я не понимаю, как вообще такие вопросы можно задавать, не проверив, какая именно часть строки принимает значение null (через два дебаглога перед строкой аля Debug.Log(pict[0].ToString())) и не приведя какую-то аргументацию в пользу того, что там null быть не может (например, вы точно в используемом скине создавали customstyle — вот скриншот; или вы точно назначали в инспекторе первый элемент массива pict — вот опять же скриншот).
Вы в шаге от бана.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Массив картинок

Сообщение ][@FF 24 апр 2011, 19:11

Спасибо большое. Вы были правы у меня не задан был размер массива картинок.
поменял
Texture2D[] pict ;
на
Texture2D[] pict = new Texture2D[5];
и добавил для 5 картинок

Синтаксис:
Используется csharp
IEnumerator GiveMePicts()
    {
        if (PictBool == true)
        {
            while (Input.GetMouseButton(0))
            {
                    WWW www = new WWW("http://192.168.22.146/tempery/" + name + "_0.jpg");
                    yield return www;
                    pict[0] = www.texture;

                    WWW www1 = new WWW("http://192.168.22.146/tempery/" + name + "_1.jpg");
                    yield return www1;
                    pict[1] = www1.texture;

                    WWW www2 = new WWW("http://192.168.22.146/tempery/" + name + "_2.jpg");
                    yield return www2;
                    pict[2] = www2.texture;
                   
                    WWW www3 = new WWW("http://192.168.22.146/tempery/" + name + "_3.jpg");
                    yield return www3;
                    pict[3] = www3.texture;

                    WWW www4 = new WWW("http://192.168.22.146/tempery/" + name + "_4.jpg");
                    yield return www4;
                    pict[4] = www4.texture;
                PictBool = false;
            }
        }
    }
Аватара пользователя
][@FF
UNIт
 
Сообщения: 62
Зарегистрирован: 24 фев 2011, 20:02
  • ICQ


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

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

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