Unity点击按钮

时间:2016-05-22 19:31:50

标签: c# unity3d

我试图从世界中删除gameObject并使用以下列表删除:

   Destroy(obj);
   itemsInInv.Remove(obj.gameObject);

但出于某种原因,每当我尝试引用它时,它都会将list.count读为0,并发出点击事件。如果我使用一个键并删除一个特定的项目,它工作正常。但是当我尝试阅读我的列表时,它会发出一个点击事件,它返回0而不是数组中实际的项目数量

就像我可以推'Z'并让Debug.Log(itemsInInv.Count)15。然后,我点击该项目尝试运行相同的Debug.Log(itemsInInv.Count),然后返回0

我尝试过在Unity程序中使用内置界面。我尝试使用

items.GetComponent<Button>().onClick.AddListener(() => { useItem(); });

实际上有一段时间100%正常工作然后由于某种原因停止工作并且无论我做什么都不会再次工作lol。

我尝试过使用:

void OnDestroy()
{
    manager.GetComponent<UIManager>().Remove(this.gameObject);
    Debug.Log("remove" + manager.GetComponent<UIManager>().itemsInInv.Count);
}
public void OnPointerClick(PointerEventData eventData)
{
    Destroy(gameObject);
}

还尝试在与点击相同的功能中执行删除。同样的问题。 Idk怎么可能这样做呢?即使我创建了一个布尔值并将其设置为false,然后使用按钮将其设置为true,在调试时它也不会被读为true

我几乎要问的是,如何在屏幕上添加按钮列表。然后删除我在屏幕和列表中单击的SAME按钮。

2 个答案:

答案 0 :(得分:1)

所以这就是我为了让它太有效而做的......

我将此脚本添加到我点击的项目

public void OnPointerClick(PointerEventData eventData)
{
    EventSystem.current.SetSelectedGameObject(gameObject);
    Debug.Log("hey"+ EventSystem.current.currentSelectedGameObject);
}

然后在我的其他脚本中运行

            items.GetComponent<Button>().onClick.AddListener(() => { useItem(); });

运行

public void useItem()
{
    Invoke("itemUsed", 0.25f);
}

在0.25

之后运行
void itemUsed()
{
    Debug.Log(EventSystem.current.currentSelectedGameObject);
    deleteItem(EventSystem.current.currentSelectedGameObject);
    sortItems();
}

我必须进行调用,因为它在选择当前选中之前调用了useItem

此外我的活动系统是我的画布的一个孩子,这让我的gameManager无法像我一样访问它

答案 1 :(得分:0)

不要使用列表。使用字典。

BindingResult.addError

然后你可以使用gameobjects名称。

FieldError

然后你可以做

{{1}}