unity OnClick()
Unity OnClick()
我在使用按钮的 'On Click ()' 组件时试图获取数组的大小。 void 运行s(打印我的 Debug.Log)但它 returns 我的数组为 0。当我使用 Input.GetKeyDown 读取同一实例中的计数大小时,它 returns 是正确的值。但是当我尝试使用相同的精确功能时,KeyDown 是 运行ning 扔了 'On Click ()' 组件它 [=42=]s 0;
所以换句话说,我的'On Click'是运行宁'useItems()'
useItems 如下
private int getItems()
{
return itemsInInv.Count;
}
public void useItem()
{
Debug.Log(getItems());
//sortItems();
}
当我 运行 使用这样的物品时
if (Input.GetKeyDown(KeyCode.T))
{
useItem();
}
它 return 是完美的值,但是当我从对象上的“单击”组件引用它时,它 returns 0 作为计数大小。
另一种解释问题的方法
当我尝试使用 UI 元素单击组件从列表中删除游戏对象时,触发的函数不会从列表中删除对象。它只会使用 Destroy() 删除显示的对象。然后将return0放在List.Count.
但是,如果我使用输入执行相同的代码以使用 'EventSystem.current.currentSelectedGameObject' 删除对象来触发函数,它将 100% 完美地工作。为什么完全相同的代码不能用于 On Click 的触发函数?
if (Input.GetKeyDown(KeyCode.Z))
{
var obj = EventSystem.current.currentSelectedGameObject;
Destroy(obj);
itemsInInv.Remove(obj.gameObject);
Debug.Log(itemsInInv.Count);
Debug.Log("You used a " + obj.name);
sortItems();
}
^ 这就是代码。如果我在单击一个对象后按 'Z',效果很好。但是,如果我 运行 该代码直接来自触发的函数,它将 return 0 在 list.count.
我找不到问题的解决方案,也不知道问题出在哪里,但我手动添加了一个监听特定功能的事件监听器,而不是使用检查器中的内置监听器。
所以我在实例化对象的地方也这样做了
items.GetComponent<Button>().onClick.AddListener(() => { useItem(); });
我在使用按钮的 'On Click ()' 组件时试图获取数组的大小。 void 运行s(打印我的 Debug.Log)但它 returns 我的数组为 0。当我使用 Input.GetKeyDown 读取同一实例中的计数大小时,它 returns 是正确的值。但是当我尝试使用相同的精确功能时,KeyDown 是 运行ning 扔了 'On Click ()' 组件它 [=42=]s 0;
所以换句话说,我的'On Click'是运行宁'useItems()'
useItems 如下
private int getItems()
{
return itemsInInv.Count;
}
public void useItem()
{
Debug.Log(getItems());
//sortItems();
}
当我 运行 使用这样的物品时
if (Input.GetKeyDown(KeyCode.T))
{
useItem();
}
它 return 是完美的值,但是当我从对象上的“单击”组件引用它时,它 returns 0 作为计数大小。
另一种解释问题的方法
当我尝试使用 UI 元素单击组件从列表中删除游戏对象时,触发的函数不会从列表中删除对象。它只会使用 Destroy() 删除显示的对象。然后将return0放在List.Count.
但是,如果我使用输入执行相同的代码以使用 'EventSystem.current.currentSelectedGameObject' 删除对象来触发函数,它将 100% 完美地工作。为什么完全相同的代码不能用于 On Click 的触发函数?
if (Input.GetKeyDown(KeyCode.Z))
{
var obj = EventSystem.current.currentSelectedGameObject;
Destroy(obj);
itemsInInv.Remove(obj.gameObject);
Debug.Log(itemsInInv.Count);
Debug.Log("You used a " + obj.name);
sortItems();
}
^ 这就是代码。如果我在单击一个对象后按 'Z',效果很好。但是,如果我 运行 该代码直接来自触发的函数,它将 return 0 在 list.count.
我找不到问题的解决方案,也不知道问题出在哪里,但我手动添加了一个监听特定功能的事件监听器,而不是使用检查器中的内置监听器。
所以我在实例化对象的地方也这样做了
items.GetComponent<Button>().onClick.AddListener(() => { useItem(); });