Синтаксис:
Используется 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();
}
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];
что я делаю не так?