Я пытаюсь внедрить систему инвентаризации в 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...
}