我有这个问题,我用GUI绘制一个新的Rect:它现在只在屏幕上绘制。我想要做的是使这个绘图成为一个对象的子项,所以我可以用SetActive(false)
隐藏它。这仅在玩家暂停和打开库存时才可用。这款游戏适用于Android 2D。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Inventory : MonoBehaviour
{
public int SlotsX, SlotsY;
public GUISkin Skin;
public List<Item> inventory = new List<Item>();
public List<Item> slots = new List<Item>();
private ItemDatabase database;
void Start()
{
for (int i = 0; i < (SlotsX * SlotsY); i++)
{
slots.Add(new Item());
}
database = GameObject.FindGameObjectWithTag("Item Database").GetComponent<ItemDatabase>();
inventory.Add(database.Items[0]);
inventory.Add(database.Items[1]);
inventory.Add(database.Items[3]);
inventory.Add(database.Items[4]);
inventory.Add(database.Items[5]);
inventory.Add(database.Items[6]);
}
void OnGUI()
{
GUI.skin = Skin;
DrawInventory();
for (int i = 0; i < inventory.Count; i++)
{
GUI.Label(new Rect(10, i * 40, 200, 50), inventory[i].itemName);
}
}
void DrawInventory()
{
for (int x = 0; x < SlotsX; x++)
{
for (int y = 0; y < SlotsY; y++)
{
GUI.Box(new Rect(x * 180, y * 180, 160, 160), "", Skin.GetStyle("Slot"));
}
}
}
}
答案 0 :(得分:0)
要以Unity 以编程方式设置GameObject的父级,只需使用:
childGameObject.transform.SetParent(parentGameObject);
编辑: 事实证明,使用OnGUI并不是这么简单。遵循Draco18s的建议并使用新的GUI系统。