繁体   English   中英

DestroyBlock脚本销毁所有块(Unity)

[英]DestroyBlock script destroying all blocks (Unity)

我一直在从事建筑游戏,每当我尝试破坏一个包含脚本的所有块时,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更改为非静态属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM