在C#中启用/禁用脚本无法正常工作

时间:2019-02-13 21:11:02

标签: c# unity3d

因此,我一直在用C#和Unity开发2D平台游戏,并且作为游戏的一部分,我一直在开发游戏道具。其中之一是不可战胜的,因此,当玩家与游戏对象碰撞时,他们无法在一段时间内被杀死。我是Unity和C#的新手,并且可以使用'.enabled'启用/禁用附加到同一对象的外部脚本。但是,当我启动电源时,物体会被摧毁,但如果我与敌人或物体相撞,我仍然会死亡。谁能看到为什么会这样。

下面是我开发的脚本。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class InvincibilityPowerup : MonoBehaviour
{
    public int Duration = 15;

    void OnTriggerEnter2D(Collider2D coll)
    {
        if (coll.gameObject.tag == "Shield")
        {
            Destroy(GameObject.Find("Invincibility"));

            StartCoroutine("Invincible");
        }
    }
    IEnumerator Invincible()
    {
        Collision pIn = gameObject.GetComponent<Collision>();
        pIn.enabled = false;

        yield return new WaitForSeconds(Duration);

        pIn.enabled = true;

    }
}

1 个答案:

答案 0 :(得分:1)

1)GameObject.Find在这里完全没有必要。您已经知道哪个对象是无敌威力:它是脚本附带的对象

2)Collision pIn = gameObject.GetComponent<Collision>();都a)不能满足您的要求(您想要获得OTHER游戏对象!)b)仍然不起作用(Collision不是组件,Collider是)

3)您要在启动协程之前销毁this,这意味着您的协程也已销毁。