【发布时间】:2014-07-09 02:09:54
【问题描述】:
我正在统一制作一个以水下为主题的 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:对象引用未设置为对象的实例”
【问题讨论】:
-
请使用unity3d标签。
-
您至少可以缩小哪个引用为空的范围吗?使用调试器单步执行应该会有所帮助 - 虽然说实话我没有使用过 Unity 的调试器,但我假设它可以做到这一点。
-
好的,我尝试在代码顶部使用公共“ParticleSystem Glow”声明粒子系统,然后使用:Glow.enableEmission = true/false。这消除了错误,但现在简单的代码不起作用......附加到空白实例化预制件的粒子系统在相机外应该是不可见的......但它们不是......