簡體   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