如何将 KeyCode.E 转换为 UIButton
How to convert KeyCode.E to UIButton
我想用 UIButton 更改 if (Input.GetKeyDown (KeyCode.E)) 但我不能,帮帮我...
private void OnTriggerStay(Collider col)
{
if (col.gameObject.CompareTag("Item"))
{
if (Input.GetKeyDown(KeyCode.E))
{
playerInventory.item.Add(GetComponent<Item>());
Destroy(col.transform.gameObject);
}
}
}
首先,我现在假设您实际上想要使用 col.GetComponent<Item>()
而不是尝试从该脚本附加到的同一个对象中获取组件。
然后你可以不使用 OnTriggerStay
而是做类似
的事情
private readonly HashSet<Item> currentTriggeredItems = new HashSet<Item>();
private void OnTriggerEnter(Collider col)
{
if (col.CompareTag("Item") && col.TryGetComponent<Item>(out var item))
{
if(!currentTriggeredItems.Contains(item)) currentTriggeredItems.Add(item);
}
}
private void OnTriggerExit(Collider col)
{
if (col.CompareTag("Item") && col.TryGetComponent<Item>(out var item))
{
if(currentTriggeredItems.Contains(item)) currentTriggeredItems.Remove(item);
}
}
// This is the method you reference in the UI.Button.onClick
public void OnUiButtonClicked()
{
foreach(var item in currentTriggeredItems)
{
playerInventory.item.Add(item);
Destroy(item.gameObject)
}
currentTriggeredItems.Clear();
}
我想用 UIButton 更改 if (Input.GetKeyDown (KeyCode.E)) 但我不能,帮帮我...
private void OnTriggerStay(Collider col)
{
if (col.gameObject.CompareTag("Item"))
{
if (Input.GetKeyDown(KeyCode.E))
{
playerInventory.item.Add(GetComponent<Item>());
Destroy(col.transform.gameObject);
}
}
}
首先,我现在假设您实际上想要使用 col.GetComponent<Item>()
而不是尝试从该脚本附加到的同一个对象中获取组件。
然后你可以不使用 OnTriggerStay
而是做类似
private readonly HashSet<Item> currentTriggeredItems = new HashSet<Item>();
private void OnTriggerEnter(Collider col)
{
if (col.CompareTag("Item") && col.TryGetComponent<Item>(out var item))
{
if(!currentTriggeredItems.Contains(item)) currentTriggeredItems.Add(item);
}
}
private void OnTriggerExit(Collider col)
{
if (col.CompareTag("Item") && col.TryGetComponent<Item>(out var item))
{
if(currentTriggeredItems.Contains(item)) currentTriggeredItems.Remove(item);
}
}
// This is the method you reference in the UI.Button.onClick
public void OnUiButtonClicked()
{
foreach(var item in currentTriggeredItems)
{
playerInventory.item.Add(item);
Destroy(item.gameObject)
}
currentTriggeredItems.Clear();
}