2015-06-10 3 views
-1

Я пытаюсь внедрить систему инвентаризации в unity3d. Это несколько способов реализовать инвентарь на gui, но я выбрал самый простой.Нажмите одну кнопку, сфокусируйте все кнопки

Каждый элемент на gui представлен как ячейка (GUI.Button). Каждая пустая ячейка означает пустое место в инвентаре (GUI.Box). Когда я нажимаю одну кнопку, чтобы выбрать элемент, все кнопки становятся целенаправленными.

Мой вопрос, почему это происходит и что исправить, чтобы сделать только одну кнопку для фокусировки? Я создал GUISkin на основе пустого. Спасибо за внимание.

Вот код для отображения запасов.

void OnGUI(){ 
    if (visible) { 
     GUI.skin = skin; 

     GUI.Window(0,new Rect((Screen.width-1024)/2,0,1024,600),InventoryBody,"Inventory"); 
    } 
} 

void InventoryBody(int id){ 
    GUIStyle style = new GUIStyle(); 

    if (currentItem) { 
     GUI.DrawTexture (new Rect(550f,70f,80f,80f), currentItem.texture); 
     GUI.color = Color.red; 


     GUI.Label (new Rect(700f,50f,400f,300f), currentItem.name); 

     GUI.color = Color.black; 

     string desc = "Description: "+currentItem.description; 

     style.wordWrap=true; 
     style.fontSize=18; 

     GUI.Label (new Rect(650f,100f,300f,500f), desc,style); 


     if(GUI.Button(new Rect(700f, 290f, 150f,50f), "Cancel")) { 
      currentItem = null; 

     } 


     if(GUI.Button(new Rect(700f, 230f, 150f,50f), "Use")) { 
      currentItem.Use(); 
     } 
    } 

    //1st column 
    GUILayout.BeginArea (new Rect (80f,60f,600f,600f)); 

    for (int i = 0; i<5; i++) { 
     if(items[i]!=null){ 

      if(GUILayout.Button (items [i].texture, GUILayout.Width (80f), GUILayout.Height (80f))){ 
       currentItem = items[i]; 
      } 


     } else { 
      GUILayout.Box("", GUILayout.Width(80f),GUILayout.Height(80f)); 
     } 
    } 

    GUILayout.EndArea(); 

    //2nd column 
    GUILayout.BeginAr... 
} 

ответ

0
GUI.color = Color.black; 

делает каждого кнопки альфа цвет выше

Смежные вопросы