DestroyBlock脚本销毁所有块(Unity)

时间:2014-11-19 00:38:46

标签: c# unity3d

我一直致力于构建游戏,每当我尝试销毁包含该脚本的所有块时,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;
    }
}

1 个答案:

答案 0 :(得分:0)

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

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