如何将 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();
}