gpt4 book ai didi

pixi.js - PIXI 如何彻底删除一个 Sprite

转载 作者:行者123 更新时间:2023-12-03 23:11:59 60 4
gpt4 key购买 nike

我正在尝试从我的游戏中完全删除一个 Sprite (充当死亡角色)。我在网上能找到的只有:

sprite.parent.removeChild(sprite);

当我这样做时, Sprite 停止渲染,但我很确定 Sprite 还在那里,我的碰撞仍然被检测到,它导致了很多问题。如何从场景中完全删除 Sprite ?

最佳答案

当没有指向它的引用并且 GC(垃圾收集器)运行时,实体会在 javascript 中被删除。因此,要完全删除 Sprite ,您需要将其与所有内容取消链接。

例如,如果您有一个 SpriteContainer在其中你做到了

mySprite = new PIXI.Sprite(myTexture)
this.addChild(mySprite)

那么你需要同时使用 removeChild和你一样,还要清除 mySprite引用。

现在请考虑 GC 运行由浏览器引擎管理,因此您实际上可能需要等待一段时间才能看到 Sprite 从内存中消失。

如果你在 chrome 控制台中引用它,这也是对 Sprite 的引用,如果你打开它,它不会被删除。

要确认 Sprite 是否被删除,使用浏览器的开发者工具,在删除前后拍摄内存快照,并使用内置的比较工具。如果您看到 Sprite 的 delta 为 -1(以及可选的 Texture 和 BaseTexture),那就很好了。您还可以在开发人员的工具中手动调用 GC。

注意:一个 PIXI.Sprite 显示一个纹理。移除 Sprite 不一定会导致移除纹理。 PIXI 有自己的 GC 来处理废弃的纹理,但是如果你的对象经常被创建和删除,最好将纹理保存在内存中,这样它就不会在加载时导致卡顿。要清除 Sprite 的内容,请参阅 destroy方法,如此处所述: http://pixijs.download/dev/docs/PIXI.Sprite.html

关于pixi.js - PIXI 如何彻底删除一个 Sprite ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56333613/

60 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com