游戏对象过早删除自己

时间:2016-01-26 21:19:23

标签: c# unity3d

我正在完成Unity教程,目前正在进行名为“太空射击”的教程。发生了一些可疑的事情。

我注意到,当游戏开始运行时,Boundary对象和小行星对象都会消失。注意,两者都有碰撞器,它们没有碰触。它们是一个名为“DestroyByContact”的脚本,它在玩家射击时基本上会破坏游戏对象。

using UnityEngine;
using System.Collections; 

public class DestroyByBoundary : MonoBehaviour 
{ 
     void OnTriggerEnter(Collider other) 
     { 
           if (other.tag == "Boundary") 
           { 
                return; 
           } 

           Destroy(other.gameObject); 
           Destroy(gameObject); 
     } 
} 

我发现当我从我的Asteroid gameObject中删除这个脚本时,游戏功能正常,对象被删除。他们的脚本一定是错的,但我找不到出了什么问题。

编辑:我忘了将Boundary对象放在Unity中的“Boundary”标签上。这解决了这个问题。

1 个答案:

答案 0 :(得分:1)

您很可能没有设置或拼错边界标记Boundary 1 。请参阅This point in the tutorial video

这导致您的if (other.tag == "Boundary")为false,因此它不会进入if块以提前退出该功能。

PS :如果您使用的是Unity 5,现在应该使用if (other.CompareTag("Boundary")),当编写太空射击游戏教程并且它所谓的比进行other.tag == "Boundary"比较具有更好的性能。您可以在Unity 5中看到使用in the Roll-A-Ball tutorial的示例.Loll-A-Ball教程还提供了在Unity 5 UI中添加新自定义标记的示例。

1:具有讽刺意味的是,当我第一次发布这个答案时,我拼错了Boundary