Unity我用SetActive做了一些我不明白的错误

时间:2016-06-26 02:10:13

标签: c# unity3d

虽然是的,有很多这样的问题都有答案,但我看了他们,他们没有我想要的答案,这是我的剧本:

using UnityEngine;
using System.Collections;

public class Player : MonoBehaviour {

    public GameObject flash;

    // Use this for initialization
    void Start () {
        flash.SetActive(false);
    }

    // Update is called once per frame
    void Update () {
        if (Input.GetMouseButtonDown(0) && GameObject.Find("1911").animation.isPlaying == false)
        {
            Debug.DrawRay(transform.position, transform.forward * 40, Color.red);
            flash.SetActive(true);
            GameObject.Find("1911").animation.Play();
        }
    }
}

分配给flash的对象是一个空对象,它有一个Halo,所以它会发出一个枪口闪光效果,但SetActive不会在每次我玩的情况下关闭它,它仍然是活跃的,在那里,枪仍然是动画,雷仍然画,闪光是唯一不起作用的东西。就像我上面提到的那样,我尝试了多种不同的东西,并阅读了多个不同的问题,但他们都没有答案。

2 个答案:

答案 0 :(得分:1)

可能GameObject已停用且GameObject.Find无法找到disabled GameObject。你需要缓存它

public class Player : MonoBehaviour {

public GameObject flash;
GameObject cachedObj;

// Use this for initialization
void Start () {
    flash.SetActive(false);
    cachedObj = GameObject.Find("1911");
}

// Update is called once per frame
void Update () {
    if (Input.GetMouseButtonDown(0) && cachedObj.animation.isPlaying == false)
    {
        Debug.DrawRay(transform.position, transform.forward * 40, Color.red);
        flash.SetActive(true);
        cachedObj.animation.Play();
    }
  }
}

答案 1 :(得分:0)

我发现了问题,我使用的是与我应该使用的不同的对象,我在事故中使用了一个立方体,所以这只是一个愚蠢的小错误

相关问题