销毁块脚本销毁所有块(统一)
本文关键字:统一 脚本 | 更新日期: 2023-09-27 18:30:49
我一直在做一个建筑游戏,每当我试图摧毁一个方块时,所有包含脚本 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
更改为非静态属性。