Как взаимодействовать со скриптовым GUI?
set440 Дата: Вс, 03 Июл 2011, 13:52 | Сообщение # 1
Сообщений: 3
Награды:
0
Репутация:
-4
Статус: Offline
Собственно есть скриптовая GUI-картинка, на подобии этой: Code
public var item0 : Texture; public var guiSkin : GUISkin; function OnGUI(){ GUI.skin = guiSkin; GUI.DrawTexture(Rect(Screen.width/2 - 16, Screen.height/2 - 16, 32, 32), item0, ScaleMode.StretchToFill, true, 0); } function Awake() { } function fillWindow(winID : int) { switch(winID){ default: Debug.Log("Default case reached"); } GUI.DragWindow (Rect (0,0, 10000, 10000)); }
Она должна меняться при наведении/отведении мыши и кроме того отвечать на события OnClick. Есть какие-то соображения?
Сообщение отредактировал set440 - Вс, 03 Июл 2011, 13:53
Сообщение Собственно есть скриптовая GUI-картинка, на подобии этой: Code
public var item0 : Texture; public var guiSkin : GUISkin; function OnGUI(){ GUI.skin = guiSkin; GUI.DrawTexture(Rect(Screen.width/2 - 16, Screen.height/2 - 16, 32, 32), item0, ScaleMode.StretchToFill, true, 0); } function Awake() { } function fillWindow(winID : int) { switch(winID){ default: Debug.Log("Default case reached"); } GUI.DragWindow (Rect (0,0, 10000, 10000)); }
Она должна меняться при наведении/отведении мыши и кроме того отвечать на события OnClick. Есть какие-то соображения? Автор - set440 Дата добавления - 03 Июл 2011 в 13:52
Левша Дата: Вс, 03 Июл 2011, 14:21 | Сообщение # 2
Черный Волк
Сообщений: 7257
Награды:
30
Репутация:
3313
Статус: Offline
Зачем так? Есть простые стандартные методы: Code
function OnMouseEnter() function OnMouseExit() function OnMouseDown() function OnMouseUp()
Не глючат.... public писать не обязательно, var и так публичная.
X.cor.R (Prologue)
Сообщение Зачем так? Есть простые стандартные методы: Code
function OnMouseEnter() function OnMouseExit() function OnMouseDown() function OnMouseUp()
Не глючат.... public писать не обязательно, var и так публичная. Автор - Левша Дата добавления - 03 Июл 2011 в 14:21
set440 Дата: Вс, 03 Июл 2011, 14:41 | Сообщение # 3
Сообщений: 3
Награды:
0
Репутация:
-4
Статус: Offline
Ну сверстать интерфейс продвинутыми виджетами в визуальном редакторе куда проще чем маяться с текстом и картинкой. Левша , ты мой недоделанный урок собери в бинарник, посмотри на разных разрешениях, поймёшь зачем. public сгенерировал скрипт визуального редактирования интерфейсов, чтобы в инспекторе не отображалась. А как быть с подменой изображения при наведении/отведении мыши? Прошу простой пример. ============================== Code
var level : String; var Texture1 : Texture2D; var Texture2: Texture2D; var menu_beep: AudioClip; var isQuit : boolean = false; public var item0 = Texture1; public var guiSkin : GUISkin; function OnGUI(){ GUI.skin = guiSkin; GUI.DrawTexture(Rect(Screen.width/2 + -170, 206, 340, 60), item0, ScaleMode.StretchToFill, true, 0); } function Awake() { } function fillWindow(winID : int) { switch(winID){ default: Debug.Log("Default case reached"); } GUI.DragWindow (Rect (0,0, 10000, 10000)); } function OnMouseEnter(){ item0 = Texture2; } function OnMouseExit(){ item0 = Texture1; }
- прилепил в инспекторе к скрипту две текстуры - не работает. Вызываю поддержку с воздуха.
Сообщение отредактировал set440 - Вс, 03 Июл 2011, 17:26
Сообщение Ну сверстать интерфейс продвинутыми виджетами в визуальном редакторе куда проще чем маяться с текстом и картинкой. Левша , ты мой недоделанный урок собери в бинарник, посмотри на разных разрешениях, поймёшь зачем. public сгенерировал скрипт визуального редактирования интерфейсов, чтобы в инспекторе не отображалась. А как быть с подменой изображения при наведении/отведении мыши? Прошу простой пример. ============================== Code
var level : String; var Texture1 : Texture2D; var Texture2: Texture2D; var menu_beep: AudioClip; var isQuit : boolean = false; public var item0 = Texture1; public var guiSkin : GUISkin; function OnGUI(){ GUI.skin = guiSkin; GUI.DrawTexture(Rect(Screen.width/2 + -170, 206, 340, 60), item0, ScaleMode.StretchToFill, true, 0); } function Awake() { } function fillWindow(winID : int) { switch(winID){ default: Debug.Log("Default case reached"); } GUI.DragWindow (Rect (0,0, 10000, 10000)); } function OnMouseEnter(){ item0 = Texture2; } function OnMouseExit(){ item0 = Texture1; }
- прилепил в инспекторе к скрипту две текстуры - не работает. Вызываю поддержку с воздуха. Автор - set440 Дата добавления - 03 Июл 2011 в 14:41
Левша Дата: Вс, 03 Июл 2011, 17:57 | Сообщение # 4
Черный Волк
Сообщений: 7257
Награды:
30
Репутация:
3313
Статус: Offline
Quote (set440 )
Прошу простой пример.
Вот рабочий пример из моего проекта: Code
var defolt : Texture2D; var focus : Texture2D; var click : Texture2D; var selFon : GUITexture; var mouseEnter : AudioClip; var mouseDown : AudioClip; private var mouseButton = 0; function Start() { guiTexture.texture = defolt; } function OnMouseEnter() { mouseButton = 1; guiTexture.texture = focus; audio.clip = mouseEnter; audio.Play(); } function OnMouseExit() { guiTexture.texture = defolt; mouseButton = 0; } function OnMouseDown() { selFon.enabled = false; selFon.pixelInset.x = guiTexture.pixelInset.x; selFon.pixelInset.y = guiTexture.pixelInset.y; selFon.pixelInset.height = guiTexture.pixelInset.height; selFon.pixelInset.width = guiTexture.pixelInset.width; selFon.enabled = true; audio.clip = mouseDown; audio.Play(); guiTexture.texture = click; } function OnMouseUp() { if (mouseButton == 1) guiTexture.texture = focus; else guiTexture.texture = defolt; }
Quote (set440 )
мой недоделанный урок собери в бинарник, посмотри на разных разрешениях, поймёшь зачем.
Я ж давал скрипт на Юнити форуме: Code
var posX = 0.0; var posY = 0.0; var shirina = 0.0; var vysota = 0.0; var scrinWidth = 0.0; var scrinHeight = 0.0; var scrinBalansWidth = 0.0; var scrinBalansHeight = 0.0; function Start () { posX = guiTexture.pixelInset.x; posY = guiTexture.pixelInset.y; shirina = guiTexture.pixelInset.width; vysota = guiTexture.pixelInset.height; scrinWidth = Screen.width; scrinHeight = Screen.height; scrinBalansWidth = 1452 / scrinWidth; scrinBalansHeight = 910 / scrinHeight; guiTexture.pixelInset.x = posX / scrinBalansWidth; guiTexture.pixelInset.y = posY / scrinBalansHeight; guiTexture.pixelInset.width = shirina / scrinBalansWidth; guiTexture.pixelInset.height = vysota / scrinBalansHeight; }
Quote (set440 )
сверстать интерфейс продвинутыми виджетами
Добрый совет, как кодер - кодеру лучше используй простые методы где это возможно. От этих продв. кроме проблем и конфл. ничего не будет.
X.cor.R (Prologue)
Сообщение Quote (set440 )
Прошу простой пример.
Вот рабочий пример из моего проекта: Code
var defolt : Texture2D; var focus : Texture2D; var click : Texture2D; var selFon : GUITexture; var mouseEnter : AudioClip; var mouseDown : AudioClip; private var mouseButton = 0; function Start() { guiTexture.texture = defolt; } function OnMouseEnter() { mouseButton = 1; guiTexture.texture = focus; audio.clip = mouseEnter; audio.Play(); } function OnMouseExit() { guiTexture.texture = defolt; mouseButton = 0; } function OnMouseDown() { selFon.enabled = false; selFon.pixelInset.x = guiTexture.pixelInset.x; selFon.pixelInset.y = guiTexture.pixelInset.y; selFon.pixelInset.height = guiTexture.pixelInset.height; selFon.pixelInset.width = guiTexture.pixelInset.width; selFon.enabled = true; audio.clip = mouseDown; audio.Play(); guiTexture.texture = click; } function OnMouseUp() { if (mouseButton == 1) guiTexture.texture = focus; else guiTexture.texture = defolt; }
Quote (set440 )
мой недоделанный урок собери в бинарник, посмотри на разных разрешениях, поймёшь зачем.
Я ж давал скрипт на Юнити форуме: Code
var posX = 0.0; var posY = 0.0; var shirina = 0.0; var vysota = 0.0; var scrinWidth = 0.0; var scrinHeight = 0.0; var scrinBalansWidth = 0.0; var scrinBalansHeight = 0.0; function Start () { posX = guiTexture.pixelInset.x; posY = guiTexture.pixelInset.y; shirina = guiTexture.pixelInset.width; vysota = guiTexture.pixelInset.height; scrinWidth = Screen.width; scrinHeight = Screen.height; scrinBalansWidth = 1452 / scrinWidth; scrinBalansHeight = 910 / scrinHeight; guiTexture.pixelInset.x = posX / scrinBalansWidth; guiTexture.pixelInset.y = posY / scrinBalansHeight; guiTexture.pixelInset.width = shirina / scrinBalansWidth; guiTexture.pixelInset.height = vysota / scrinBalansHeight; }
Quote (set440 )
сверстать интерфейс продвинутыми виджетами
Добрый совет, как кодер - кодеру лучше используй простые методы где это возможно. От этих продв. кроме проблем и конфл. ничего не будет.Автор - Левша Дата добавления - 03 Июл 2011 в 17:57