-
Creator 版本:3.3.1
-
目标平台: iOS
-
重现方式:必现
-
首个报错:
背景
我们是在 3.0.0 RC 版本开始接入,完成新项目开发。前期遇到较多问题,在论坛和官方的支持下,通过各种方式解决了。
其中重要的一点是,我们将游戏场景放在 二级页面。比如首页都是 Feed 流,提供游戏入口,因此需要在退出游戏是,尽可能释放内存。
之前的反馈
- https://forum.cocos.org/t/topic/104539(二级页面问题)
- https://forum.cocos.org/t/topic/111604/18(内存泄露问题)
- https://forum.cocos.org/t/topic/114793(截图拍照问题)
重复进入出现闪退
问题一
2021-09-15 10:09:28.590318+0800 Supra[94400:4447792] *** -[CAMetalLayer nextDrawable]: message sent to deallocated instance 0x6000bd7878a0
在退出引擎时,出现上述错误。排查发现 Cocos Engine 在运行过程中会不断 flushMessages,清理相关内存,在相关对象被释放后,不能继续使用。需要修改 Engine 来解决
问题二
在退出游戏后,出现以下报错
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
frame #0: 0x00000001119844e3 Supra`cc::Application::restartVM(this=0x0000600001b43660) at Application.cpp:45:46
* frame #1: 0x000000011198485b Supra`cc::Application::tick(this=0x0000600001b43660) at Application.cpp:100:9
frame #2: 0x00000001119efa73 Supra`-[MyTimer renderScene:](self=0x0000600001538d40, _cmd="renderScene:", sender=0x0000600001662eb0) at Application-ios.mm:86:11
frame #3: 0x00007fff287c80a4 QuartzCore`CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 914
frame #4: 0x00007fff288bf828 QuartzCore`display_timer_callback(__CFMachPort*, void*, long, void*) + 393
frame #5: 0x00007fff2033670d CoreFoundation`__CFMachPortPerform + 157
frame #6: 0x00007fff2036a6f1 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 41
frame #7: 0x00007fff20369abe CoreFoundation`__CFRunLoopDoSource1 + 607
frame #8: 0x00007fff20363ff8 CoreFoundation`__CFRunLoopRun + 2578
frame #9: 0x00007fff20363103 CoreFoundation`CFRunLoopRunSpecific + 567
frame #10: 0x00007fff2c851cd3 GraphicsServices`GSEventRunModal + 139
frame #11: 0x00007fff24ffbe63 UIKitCore`-[UIApplication _run] + 928
frame #12: 0x00007fff25000a53 UIKitCore`UIApplicationMain + 101
frame #13: 0x000000010e59615d Supra`main at main.swift:29:5
frame #14: 0x0000000119775e1e dyld_sim`start_sim + 10
希望官方同学能够支持下,感谢
模型截图问题
3.0.0 其实不支持这个能力,我们是自己定制引擎实现。但升级 engine 的第一原则是,能不改引擎就不该,便于后期维护。
升级 3.3.1 后,引擎中看到 API 应该是支持的 copyTextureToBuffers
但实际调试发现,web 端正常。Native iOS 端返回全 0,猜测可能是实现有 BUG