引擎版本:CocosCreator 3.0 preview
从 2.4 版本升级,但之前入口页都是使用 Native 开发的,通过 CCEAGLView 加载游戏场景。
但升级到 3.0 Preview 版本后,没有 CCEAGLView,这部分需要怎么处理呢
预期
- 部分场景下,游戏页面局部渲染。如底部是 Native 的 Tab 按钮,或者在模型选择中,Cocos 仅用于模型展示,其他部分使用 Native 展示
- Cocos 游戏页面作为二级页面
示例
-
通过上面那种方式,启动后,可以加载游戏页面。但设置的 Rect 无效,加载后仍是全屏展示
-
下面这种方式,预期是将 游戏视图插入到 Native 中,但运行后会出现异常,无法渲染
堆栈信息
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
frame #0: 0x0000000188b7e0dc libsystem_kernel.dylib`__pthread_kill + 8
frame #1: 0x0000000188bf7094 libsystem_pthread.dylib`pthread_kill$VARIANT$mp + 380
frame #2: 0x0000000188ad7ea8 libsystem_c.dylib`abort + 140
frame #3: 0x00000001881a4788 libc++abi.dylib`abort_message + 132
frame #4: 0x00000001881a4934 libc++abi.dylib`default_terminate_handler() + 308
frame #5: 0x00000001881bbe00 libobjc.A.dylib`_objc_terminate() + 124
frame #6: 0x00000001881b0838 libc++abi.dylib`std::__terminate(void (*)()) + 16
frame #7: 0x00000001881b01a8 libc++abi.dylib`__cxxabiv1::failed_throw(__cxxabiv1::__cxa_exception*) + 32
frame #8: 0x00000001881b0168 libc++abi.dylib`__cxa_throw + 124
frame #9: 0x00000001881bbb3c libobjc.A.dylib`objc_exception_throw + 380
frame #10: 0x0000000188efdab8 CoreFoundation`-[NSObject(NSObject) doesNotRecognizeSelector:] + 140
frame #11: 0x00000001b57cef60 UIKitCore`-[UIResponder doesNotRecognizeSelector:] + 280
frame #12: 0x0000000188fe6ac4 CoreFoundation`___forwarding___ + 1408
frame #13: 0x0000000188fe875c CoreFoundation`_CF_forwarding_prep_0 + 92
* frame #14: 0x00000001004f1e64 NewProject_2-mobile`cc::gfx::CCMTLDevice::initialize(this=0x0000000119e1c4e0, info=0x00000002831bb720) at MTLDevice.mm:56:53
frame #15: 0x000000010021bec8 NewProject_2-mobile`js_gfx_Device_initialize(s=0x000000016fcdf9e0) at jsb_gfx_auto.cpp:3390:29
frame #16: 0x000000010021bbf4 NewProject_2-mobile`js_gfx_Device_initializeRegistry(_v8args=0x000000016fcdfb90) at jsb_gfx_auto.cpp:3398:1
frame #17: 0x00000001006b901c NewProject_2-mobile`v8::internal::FunctionCallbackArguments::Call(v8::internal::CallHandlerInfo) + 568
frame #18: 0x00000001006b85a0 NewProject_2-mobile`v8::internal::MaybeHandle<v8::internal::Object> v8::internal::(anonymous namespace)::HandleApiCallHelper<false>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::Handle<v8::internal::Object>, v8::internal::BuiltinArguments) + 596
frame #19: 0x00000001006b7c24 NewProject_2-mobile`v8::internal::Builtin_Impl_HandleApiCall(v8::internal::BuiltinArguments, v8::internal::Isolate*) + 276
frame #20: 0x0000000100ee66ec NewProject_2-mobile`Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_BuiltinExit + 108
frame #21: 0x0000000100e739a4 NewProject_2-mobile`Builtins_InterpreterEntryTrampoline + 228
frame #22: 0x0000000100e739a4 NewProject_2-mobile`Builtins_InterpreterEntryTrampoline + 228
frame #23: 0x0000000100e739a4 NewProject_2-mobile`Builtins_InterpreterEntryTrampoline + 228
frame #24: 0x0000000100e739a4 NewProject_2-mobile`Builtins_InterpreterEntryTrampoline + 228
frame #25: 0x0000000100e739a4 NewProject_2-mobile`Builtins_InterpreterEntryTrampoline + 228
frame #26: 0x0000000100e739a4 NewProject_2-mobile`Builtins_InterpreterEntryTrampoline + 228
frame #27: 0x0000000100e6c184 NewProject_2-mobile`Builtins_ArgumentsAdaptorTrampoline + 228
frame #28: 0x0000000100ec5140 NewProject_2-mobile`Builtins_PromiseFulfillReactionJob + 64
frame #29: 0x0000000100e948fc NewProject_2-mobile`Builtins_RunMicrotasks + 572
frame #30: 0x0000000100e70dcc NewProject_2-mobile`Builtins_JSRunMicrotasksEntry + 172
- 作为二级页面展示,从首页 Push 到游戏页面,报错和 2 这种情况类似
2021-01-19 11:20:27.888861+0800 NewProject_2-mobile[478:52186] -[UILayoutContainerView device]: unrecognized selector sent to instance 0x103e0cd50
2021-01-19 11:20:27.890122+0800 NewProject_2-mobile[478:52186] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UILayoutContainerView device]: unrecognized selector sent to instance 0x103e0cd50'
*** First throw call stack:
(0x188fe127c 0x1881bb9f8 0x188efdab8 0x1b57cef60 0x188fe6ac4 0x188fe875c 0x100cbddec 0x1009e7e50 0x1009e7b7c 0x100e84fa4 0x100e84528 0x100e83bac 0x1016b266c 0x10163f924 0x10163f924 0x10163f924 0x10163f924 0x10163f924 0x10163f924 0x101638104 0x1016910c0 0x10166087c 0x10163cd4c 0x106fc8000)
libc++abi.dylib: terminating with uncaught exception of type NSException
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UILayoutContainerView device]: unrecognized selector sent to instance 0x103e0cd50'
terminating with uncaught exception of type NSException