unity3d 是否有一种方法可以优化并可能自动化此ItemPickup脚本?

qyzbxkaa  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(149)

有没有办法优化我脚本的这一部分?

public TextMeshProUGUI interactionText;
    public TextMeshProUGUI pickedUpText;
    public GameObject InteractionTextShow;
    public GameObject PickedUpTextShow;

如果可能的话,我希望在这个脚本中自动分配Text和TextShow。interactionText用于将对象的名称分配给name,而interactionTextShow用于显示文本。下面是完整的代码。

public class ItemPickup : Interactable
{
    public TextMeshProUGUI interactionText;
    public TextMeshProUGUI pickedUpText;
    public GameObject InteractionTextShow;
    public GameObject PickedUpTextShow;
    [SerializeField] private Item item;

    public override void OnFocus()
    {
        print("Press E to pick up " + item.Name);

        interactionText.text = item.Name;
        InteractionTextShow.SetActive(true);
    }

    public override void OnInteract()
    {
        PickUp(); 
        PickedUpTextShow.SetActive(true);
        pickedUpText.text = "Picked up: " + item.Name;
    }


    public override void OnLoseFocus()
    {
        InteractionTextShow.SetActive(false);
        print("Lost focus with " + item.Name);
    }
    void PickUp()
    {

        print("Picked up: " + item.Name);
        bool wasPickedUp = Inventory.instance.Add(item);
        if (wasPickedUp)
        {
            Destroy(gameObject);
            InteractionTextShow.SetActive(false);
        }
    }
}

我试图删除TextMeshProUGUI,并分配类似于interactionTextShow.TextMeshProUGUI.text = item.Name的东西,但没有起作用

lvmkulzt

lvmkulzt1#

我通常通过程序(通过代码)分配脚本的方法是示例化一个空对象,如下所示:“游戏对象对象=示例化(新游戏对象);“,然后将脚本分配给它,如下所示:“对象的名称。”
希望这在某种程度上有所帮助!

相关问题