Unity3d Unity在摄影机外部时禁用粒子系统

Unity3d Unity在摄影机外部时禁用粒子系统,unity3d,particles,Unity3d,Particles,我正在联合制作一个2D游戏,有一个水下主题。为了让它看起来非常漂亮,我使用脚本在地图中的随机位置生成发光对象。这些对象是带有粒子系统的空白精灵 问题是,我一次在地图上有大约100个活跃的游戏,虽然它看起来很漂亮,但在没有i5处理器或更快的计算机上,游戏还是落后了 我想到的解决方案是在对象超出摄影机边界时禁用它们,这样一次只有大约4或5个活动对象 这是我的剧本: void Update () { if (this.transform.position.x < Camera.main

我正在联合制作一个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 ();


    }
} 
void更新(){
如果(this.transform.position.xCamera.main.transform.position-13&&this.transform.particleemit=true;
this.gameObject.particleSystem.Play();
} 
否则{
this.gameObject.particleSystem.Pause();
}
} 
好的,它会检查对象是否正确超出摄影机边界,但在禁用对象时,会出现以下错误:


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

您同时使用
particleMitter
,它指的是传统粒子系统,以及
particleSystem
,它指的是新的Souriken系统。您可能只使用了Souriken粒子,所以我会这样重写它:

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)
    {
        particleSystem.Play ();
    } 
    else
    {
        particleSystem.Pause ();
    }
}
void更新()
{
if(this.transform.position.xCamera.main.transform.position.x-13
&&这个.transform.position.yCamera.main.transform.position.y-13)
{
particleSystem.Play();
} 
其他的
{
particleSystem.Pause();
}
}

请使用unity3d标签。您能否至少缩小哪个引用为空?使用调试器进行调试应该会有所帮助-虽然说实话,我没有使用Unity的调试器,但我假设它可以做到这一点。好的,我尝试使用公共“ParticleSystem Glow”在代码顶部声明粒子系统,然后使用:Glow.enableEmission=true/false。这将删除错误,但现在代码无法正常工作。。。附着在空白实心预制件上的粒子系统在摄像机外应该是不可见的。但他们不是…我很感激你的回答。奇怪的是,我实际上已经找到了另一个解决方案(经过数小时的搜索和实验)LOL。下面是我想到的:if(this.transform.position.x