有没有办法只实例化一个对象的一个​​实例?

Is there a way to only instantiate one instance of an object?

目前,我正在开发一个资源管理游戏,玩家可以在其中 select 某种工具,例如火,并将其应用于瓷砖。该脚本应该检查玩家是否使用开火工具点击“森林”图块,但它实例化了许多草地图块并且在错误的位置。我怎样才能阻止玩家按住点击并只实例化一个对象?此外,如果有人知道为什么图块出现在命中对象变换上方,我们将不胜感激。

 void CheckMouseDown()
{

    if (Input.GetAxis("Fire1") != 0 && canClick == true)
    {
        print("yes");
        canClick = false;
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        // Casts the ray and get the first game object hit
        Physics.Raycast(ray, out hit);
        if (hit.collider.gameObject.CompareTag("Forest"))
        {
            if (gamerule.gm.IsBurning == true)
            {
                Instantiate(meadow, hit.transform);

            }
        }
    }
    else
    {
        canClick = true;
    }
    
}

使用Input.getMouseButtonDown(0) 检查是否在此帧中单击了鼠标左键。当按住按钮时,您当前的方法会连续触发,因此您会多次生成该对象。我假设 canClick 被用来试图阻止这种情况,所以我在这里删除了它。 Unity documentation 有更多关于此的 in-depth 信息。

void CheckMouseDown()
{
    if (Input.GetMouseButtonDown(0))
    {
        print("yes");
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        // Casts the ray and get the first game object hit
        Physics.Raycast(ray, out hit);
        if (hit.collider.gameObject.CompareTag("Forest"))
        {
            if (gamerule.gm.IsBurning == true)
            {
                Instantiate(meadow, hit.transform);

            }
        }
    }
}