[LayaAirIDE 2.0]Laya2.6 物理系统内存泄漏与设计不合理的PhysicsSimulation
1.内存泄漏BUG
PhysicsSimulation.shapeCastAll方法存在内存泄漏,效果在我发的截图中,原因是此方法内部没有执行而导致内存泄漏
this._collisionsUtils.recoverAllHitResultsPool();
2.不合理的PhysicsSimulation
每个Scene3D对象都独自拥有一个PhysicsSimulation是否合理?
当同时拥有多个Scene3D(PhysicsSimulation)对象时,内存过大会导致超过预设值的16MB物理内存,在动态增长内存的版本里一样会导致内存过大而游戏奔溃。
多Scene3D使用场景1:UI面板添加Scene3D到UI节点显示3D模型对象。
多Scene3D使用场景2:在已加载一个Scene3D后请求加载另一个Scene3D对象。
场景1解决方法:构造函数里加个参数允许使用者不使用PhysicsSimulation,而达到游戏中同时间只存在一个PhysicsSimulation。
场景2解决方法:加载新场景前,先删除本场景。
PhysicsSimulation.shapeCastAll方法存在内存泄漏,效果在我发的截图中,原因是此方法内部没有执行而导致内存泄漏
this._collisionsUtils.recoverAllHitResultsPool();
2.不合理的PhysicsSimulation
每个Scene3D对象都独自拥有一个PhysicsSimulation是否合理?
当同时拥有多个Scene3D(PhysicsSimulation)对象时,内存过大会导致超过预设值的16MB物理内存,在动态增长内存的版本里一样会导致内存过大而游戏奔溃。
多Scene3D使用场景1:UI面板添加Scene3D到UI节点显示3D模型对象。
多Scene3D使用场景2:在已加载一个Scene3D后请求加载另一个Scene3D对象。
场景1解决方法:构造函数里加个参数允许使用者不使用PhysicsSimulation,而达到游戏中同时间只存在一个PhysicsSimulation。
场景2解决方法:加载新场景前,先删除本场景。
要回复问题请先登录
1 个回复
Aar0n
赞同来自:
第二个问题,是用户自身需要在切换新场景前弄一个小的过度场景,然后删除之前的,再加载新场景。