我一直致力于构建游戏,每当我尝试销毁包含该脚本的所有块时,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;
}
}
答案 0 :(得分:0)
好的,所以我更多地查看了代码,我发现这种情况几乎是正面的,因为你的IsDestroyable
变量是静态的。这意味着在创建的每个DestroyBlock
对象之间共享一个实例。每当DestroyBlock
的实例看到鼠标已输入它时,它会将IsDestroyable
设置为true,这意味着对于存在的每个块IsDestroyable == true
。 Update
被调用,并且因为还没有MouseExit
,所有块都被破坏了。就目前而言,要么每一个街区都要被摧毁,要么就没有一块。
解决此问题的最简单方法就是将IsDestroyable
更改为非静态属性。