Как взаимодействовать со скриптовым GUI? - Форум Игроделов
Пт, 17 Май 2024, 05:45 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » UNITY3D » СКРИПТИНГ » Как взаимодействовать со скриптовым GUI? ([JS] Rollover, Onclick и прочие)
Как взаимодействовать со скриптовым 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
Quote
Зачем так?

Ну сверстать интерфейс продвинутыми виджетами в визуальном редакторе куда проще чем маяться с текстом и картинкой.
Левша, ты мой недоделанный урок собери в бинарник, посмотри на разных разрешениях, поймёшь зачем.

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
 
Сообщение
Quote
Зачем так?

Ну сверстать интерфейс продвинутыми виджетами в визуальном редакторе куда проще чем маяться с текстом и картинкой.
Левша, ты мой недоделанный урок собери в бинарник, посмотри на разных разрешениях, поймёшь зачем.

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)
сверстать интерфейс продвинутыми виджетами

Добрый совет, как кодер - кодеру smile лучше используй простые методы где это возможно.
От этих продв. кроме проблем и конфл. ничего не будет.


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)
сверстать интерфейс продвинутыми виджетами

Добрый совет, как кодер - кодеру smile лучше используй простые методы где это возможно.
От этих продв. кроме проблем и конфл. ничего не будет.

Автор - Левша
Дата добавления - 03 Июл 2011 в 17:57
Форум Игроделов » UNITY3D » СКРИПТИНГ » Как взаимодействовать со скриптовым GUI? ([JS] Rollover, Onclick и прочие)
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024