销毁块脚本销毁所有块(统一)

本文关键字:统一 脚本 | 更新日期: 2023-09-27 18:30:49

我一直在做一个建筑游戏,每当我试图摧毁一个方块时,所有包含脚本 DestroyBlock.cs 的方块都会被摧毁。我知道为什么会出现这个问题,但我不知道如何解决它。谁能帮我?我正在尝试在本周六之前完成开发,我需要快速解决此问题。

using UnityEngine;
using System.Collections;
public class DestroyBlock : MonoBehaviour
{
    public static bool IsDestroyable = false;
    void Update ()
    {
        if (Input.GetMouseButtonDown(1) && IsDestroyable == true)
        {
            Destroy(gameObject);
        }
    }
    void OnMouseEnter()
    {
        renderer.material.color = Color.black;
        IsDestroyable = true;
    }
    void OnMouseExit()
    {
        renderer.material.color = Color.white;
        IsDestroyable = false;
    }
}

销毁块脚本销毁所有块(统一)

好的,所以我已经更多地查看了代码,我几乎可以肯定发生这种情况的原因是因为您的IsDestroyable变量是静态的。这意味着在创建的每个DestroyBlock对象之间共享单个实例。每当DestroyBlock实例看到鼠标进入它时,它都会将IsDestroyable设置为 true,这意味着对于存在的每一个块IsDestroyable == true . Update被调用,并且,因为还没有MouseExit,所有的块都被摧毁了。就目前而言,要么每个街区都会被摧毁,要么都不会被摧毁。

解决此问题的最简单方法是将IsDestroyable更改为非静态属性。