Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 摧毁游戏对象_C#_Unity3d_Sprite_Gameobject - Fatal编程技术网

C# 摧毁游戏对象

C# 摧毁游戏对象,c#,unity3d,sprite,gameobject,C#,Unity3d,Sprite,Gameobject,我在Unity中创建了一个简单的2D触控游戏,每3秒在场景顶部就会产生一个钉子,当钉子落下时,玩家会在钉子击中下面的角色之前敲打钉子,但是,当我测试游戏时,当我敲打钉子(游戏对象)时,它会摧毁场景中的所有钉子(游戏对象)。代码如下: public GameObject spike; public float spawnTime1 = 1f; // Use this for initialization void Start () { InvokeRepeating ("SpawnSpi

我在Unity中创建了一个简单的2D触控游戏,每3秒在场景顶部就会产生一个钉子,当钉子落下时,玩家会在钉子击中下面的角色之前敲打钉子,但是,当我测试游戏时,当我敲打钉子(游戏对象)时,它会摧毁场景中的所有钉子(游戏对象)。代码如下:

public GameObject spike;
public float spawnTime1 = 1f;

// Use this for initialization
void Start () {
    InvokeRepeating ("SpawnSpike", spawnTime1, spawnTime1);

}

// Update is called once per frame
void Update () {
    for (var i = 0; i < Input.touchCount; ++i) {
        if (Input.GetTouch(i).phase == TouchPhase.Began) {
            Destroy (gameObject);
        }
    }
}

void SpawnSpike () {

    var newSpike = GameObject.Instantiate (spike); 
    newSpike.transform.position = new Vector3 (Random.Range(-3, 3), 11f, 0f);
公共游戏对象钉;
公共浮动时间1=1f;
//用于初始化
无效开始(){
调用重复(“spawnspeck”、spawnTime1、spawnTime1);
}
//每帧调用一次更新
无效更新(){
对于(变量i=0;i
运行时,您似乎正在破坏这个类似游戏管理器的脚本本身

void Update () {
    for (var i = 0; i < Input.touchCount; ++i) {
        if (Input.GetTouch(i).phase == TouchPhase.Began) {
            Destroy (gameObject);
        }
    }
}

此特定代码要求您的spike Prefact(模板)具有标记“spike”。我还建议您将此代码放在某种全局“游戏管理器”脚本的
更新()
(而不是放在spike脚本中),这样您就不会过度处理触摸。

运行时,看起来您正在破坏这个类似游戏管理器的脚本本身

void Update () {
    for (var i = 0; i < Input.touchCount; ++i) {
        if (Input.GetTouch(i).phase == TouchPhase.Began) {
            Destroy (gameObject);
        }
    }
}

此特定代码要求您的spike Prefact(模板)具有标记“spike”。我还建议您将此代码放置在某种全局“游戏管理器”脚本的
Update()
(而不是spike脚本)中,这样您就不会过度处理触摸。

也许您的游戏对象是嵌套的,您会破坏它们的“父对象”?你能告诉我们层次结构吗?这个脚本是某种不同的“游戏管理器”吗?如果是,那很好。但是在你的
Update()
,你如何计算
gameObject
是什么?@d4Rk。是的,当然:@andeart在“Update()中)“我有我的触摸功能,当玩家触摸场景时,它会计算按下的触摸次数,并销毁“游戏对象”,即spike(精灵)。目前看来还可以。我认为你需要共享更多代码。这些代码位于何处?是单行为吗?但是你会使用
destroy(游戏对象)销毁自己。”
所以可能不是。也许你的游戏对象是嵌套的,你破坏了它们的“父对象”?你能告诉我们层次结构吗?这个脚本是某种不同的“游戏管理器”吗?如果是,那就好了。但是在你的
Update()
中,你如何计算
gameObject
是什么?@d4Rk。是的,当然:@andeart在'Update()中“我有我的触摸功能,当玩家触摸场景时,它会计算按下的触摸次数,并销毁“游戏对象”,即spike(精灵)。目前看来还可以。我认为你需要共享更多代码。这些代码位于何处?是单行为吗?但是你会使用
destroy(游戏对象)销毁自己。”
所以可能不会……谢谢你的帮助!非常感谢!@JohnGool很高兴我能帮忙。祝你好运!谢谢你的帮助!非常感谢!@JohnGool很高兴我能帮忙。祝你好运!