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