C# 销毁块脚本销毁所有块(Unity)

C# 销毁块脚本销毁所有块(Unity),c#,unity3d,C#,Unity3d,我一直在做一个建筑游戏,每当我试图摧毁一个区块时,包含脚本的所有区块,DestroyBlock.cs都会被摧毁。我知道问题发生的原因,但我不知道如何解决它。谁能帮帮我吗?我正在努力得到一个开发建设本周六,我需要一个快速修复这一点 using UnityEngine; using System.Collections; public class DestroyBlock : MonoBehaviour { public static bool IsDestroyable = false;

我一直在做一个建筑游戏,每当我试图摧毁一个区块时,包含脚本的所有区块,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
对象之间共享一个实例。任何时候,
destroyable
的实例看到鼠标已经进入它,它就会将
IsDestroyable
设置为true,这意味着对于存在的每个块
IsDestroyable==true
<调用code>Update,因为还没有出现
MouseExit
,所以所有的块都会被销毁。目前,要么每个街区都会被摧毁,要么没有一个街区会被摧毁


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

我实际上通过使用OnMouseDown函数而不是使用Update函数解决了此问题,谢谢。:)