Взаимодействие с объектом на сцене

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

Взаимодействие с объектом на сцене

Сообщение Umarta 24 авг 2009, 12:56

В одной из тем описывал задачу, этот вопрос продолжение той темы. При нажатии на объект нужно отобразить на определенной месте информацию из текстового файла.
Сочинил скрипт, который при нажатии одной кнопки мыши отображает информацию, а другая, соответственно скрывает:

var scrollViewVector : Vector2 = Vector2.zero;
var MySkin : GUISkin;
var customGuiStyle : GUIStyle;
var assets : TextAsset;
var MyWindow = Rect (20,20,300,280);
var showWindow = false;
var myFont : Font;
myFont.name = "arial 1";
function Update () {
if (Input.GetMouseButton (1)) {
showWindow = true;
}
else if (Input.GetMouseButton (0)) {
showWindow = false;
}
}
function OnGUI () {
GUI.skin.font = myFont;
if (showWindow) {
GUI.Window (2, Rect (Screen.width/2-160,Screen.height-200,380,200), DoMyWindow, "Информация по объекту:");
}
}
function DoMyWindow (windowID : int) {
GUI.skin = MySkin;
GUI.skin.font = myFont;
scrollViewVector = GUI.BeginScrollView (Rect (15, 20, 350, 170), scrollViewVector, Rect (0, 0, 330, 1900));
GUI.TextArea (Rect (5, 5, 600, 100), assets.text);
GUI.EndScrollView();
}
Этот скрипт приаатачил к нужному объекту на сцене. Но вот незадача, скрипт выполняется в независимости от того, нажата ли на объекте кнопка мыши или же на любом другом месте сцены. Как быть? 8()
Umarta
UNIт
 
Сообщения: 77
Зарегистрирован: 28 май 2009, 19:16

Re: Взаимодействие с объектом на сцене

Сообщение gnoblin 24 авг 2009, 13:44

Код: Выделить всё
void OnMouseOver()
{
     if(Input.GetMouseButton(0))
          showWindow = true;
     if(Input.GetMouseButton(1))
          showWindow = false;
}
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Взаимодействие с объектом на сцене

Сообщение Avatarchik 24 авг 2009, 13:50

Добавить ava-karaban в Skype
Аватара пользователя
Avatarchik
UNITрон
 
Сообщения: 274
Зарегистрирован: 04 апр 2009, 15:36
Откуда: Украина(Донецк)
  • ICQ

Re: Взаимодействие с объектом на сцене

Сообщение Const_47 24 авг 2009, 13:54

Понятно почему, он делает именно то, что вы просите.

Вот ту вы "спросили" - нажата ли вторая кнопка мыши? Причем такого условия, что она должна быть нажата именно на обжекте нет.
function Update () {
if (Input.GetMouseButton (1)) {
showWindow = true;
}
...............
}

Но если сделать так
...............
function OnMouseOver () {

if (Input.GetMouseButton (1)) {
showWindow = true;
}
else if (Input.GetMouseButton (0)) {
showWindow = false;
}

}
...............

и прочитать вот это http://unity3d.com/support/documentatio ... eOver.html

а потом еще вот это http://unity3d.com/support/documentatio ... viour.html

То я думаю, у вас все получится ;)
Const_47
Герой Форума
 
Сообщения: 271
Зарегистрирован: 23 мар 2009, 19:24
Откуда: Украина. Львов\Новояворовск

Re: Взаимодействие с объектом на сцене

Сообщение Umarta 25 авг 2009, 10:33

Вот что получилось после Ваших советов:

var scrollViewVector : Vector2 = Vector2.zero;
var MySkin : GUISkin;
var customGuiStyle : GUIStyle;
var assets : TextAsset;
var MyWindow = Rect (20,20,300,280);
var showWindow = false;
var myFont : Font;
var myColor = Color (0.2,0.5,0.1,1);
myFont.name = "arial";
function OnMouseOver () {
if (Input.GetMouseButtonDown (1)) {
renderer.material.color = Color.red;
showWindow = true;
}
}
function Update () {
if (Input.GetMouseButtonDown (0)) {
renderer.material.color = myColor;
showWindow = false;
}
}
function OnGUI () {
GUI.skin.font = myFont;
if (showWindow) {
GUI.Window (2, Rect (Screen.width/2-160,Screen.height-200,380,200), DoMyWindow, "Информация по объекту:");
}
}
function DoMyWindow (windowID : int) {
GUI.skin = MySkin;
GUI.skin.font = myFont;
scrollViewVector = GUI.BeginScrollView (Rect (15, 20, 350, 170), scrollViewVector, Rect (0, 0, 330, 1900));
GUI.TextArea (Rect (5, 5, 600, 100), assets.text);
GUI.EndScrollView();
}
Достаточно по-ламерски, но и программерский опыт без недели месяц x_x . Спасибо Всем огромное! :-bd
Umarta
UNIт
 
Сообщения: 77
Зарегистрирован: 28 май 2009, 19:16


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

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

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