我正在制作一个具有水下主题的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:对象引用未设置为对象的实例”
答案 0 :(得分:1)
您同时使用particleEmitter
和particleSystem
,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 ();
}
}
引用旧的粒子系统,{{1}}引用新的Souriken系统。您可能只使用Souriken粒子,所以我会像这样重写它:
{{1}}