[英]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.