Unity在摄像机外部禁用粒子系统

时间:2014-05-27 22:03:20

标签: unity3d particles

我正在制作一个具有水下主题的2D游戏。为了使它看起来非常漂亮,我使用脚本在地图中的随机位置生成发光的对象。这些对象是附有粒子系统的空白精灵。

问题是,我一次有大约100个活跃在地图中,虽然它看起来非常漂亮,但游戏却落后于没有i5处理器或更快的计算机。

我想到的解决方案是在物体离开相机范围时禁用它们,因此一次只有4或5个活动...

这是我的剧本:

void Update () {

    if (this.transform.position.x < Camera.main.transform.position.x + 13 && this.transform.position.x > Camera.main.transform.position.x - 13 && this.transform.position.y < Camera.main.transform.position.y + 13 && this.transform.position.y > Camera.main.transform.position.y - 13) {             this.gameObject.particleEmitter.emit = true;
        this.gameObject.particleSystem.Play ();


            } 

    else {

        this.gameObject.particleSystem.Pause ();


    }
} 

好的,它会检查对象是否在摄像机边界之外,但是当禁用该对象时,我收到此错误:

“NullReferenceException:对象引用未设置为对象的实例”

1 个答案:

答案 0 :(得分:1)

您同时使用particleEmitterparticleSystemvoid Update () { if (this.transform.position.x < Camera.main.transform.position.x + 13 && this.transform.position.x > Camera.main.transform.position.x - 13 && this.transform.position.y < Camera.main.transform.position.y + 13 && this.transform.position.y > Camera.main.transform.position.y - 13) { particleSystem.Play (); } else { particleSystem.Pause (); } } 引用旧的粒子系统,{{1}}引用新的Souriken系统。您可能只使用Souriken粒子,所以我会像这样重写它:

{{1}}