如下图,用模拟器预览的时候闪退了,浏览器预览没问题,有大神知道咋回事么?
Process: Simulator [80713]
Path: /Applications/CocosCreator/*/CocosCreator.app/Contents/Resources/cocos2d-x/simulator/mac/Simulator.app/Contents/MacOS/Simulator
Identifier: com.cocos.apps.simulator
Version: 20200927
Code Type: X86-64 (Native)
Parent Process: CocosCreator [79970]
Responsible: CocosCreator [66107]
User ID: 501
Date/Time: 2021-08-09 16:15:04.914 +0800
OS Version: Mac OS X 10.15.6 (19G2021)
Report Version: 12
Bridge OS Version: 4.6 (17P6610)
Anonymous UUID: 96ADB130-9527-BA8C-74A3-692614CAC393
Sleep/Wake UUID: C2AEB264-D867-4E0D-87AE-F03A853DD34A
Time Awake Since Boot: 990000 seconds
Time Since Wake: 25000 seconds
System Integrity Protection: enabled
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Application Specific Information:
Assertion failed: (false), function buildArmature, file /Users/nantas/jenkins/workspace/Creator_2D/cocos2d-x-lite/mac/cocos2d-x-lite/cocos/editor-support/dragonbones/factory/BaseFactory.cpp, line 456.
我自己找到原因了,我这边的原因是你场景中有个对象加载了一个龙骨,这个龙骨是你在bundle里的,而这个bundle你是异步加载导致的,你可以先将这个对象的龙骨文件绑定删掉就不闪退了
不行貌似只要原始对象有龙骨了然后再做替换就会报错
this.armatureDisplay.dragonAsset = ret.dragonAsset;
this.armatureDisplay.dragonAtlasAsset = ret.dragonAtlasAsset;
问题解决了
正确替换龙骨的步骤应该是:
let armatureDisplay = node.getComponent(dragonBones.ArmatureDisplay);
let ret = loadBones(boneName)//忽略加载龙骨过程
node.removeComponent(armatureDisplay);//移除原来的龙骨组件
armatureDisplay = node.addComponent(dragonBones.ArmatureDisplay);添加一个新的龙骨组件
// 替换龙骨资源
armatureDisplay.dragonAsset = ret.dragonAsset;
armatureDisplay.dragonAtlasAsset = ret.dragonAtlasAsset;
armatureDisplay.armatureName=armatureName;
收藏一下
该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。