呃···好像发错区了。
项目在github上,有兴趣的同学可以帮我看下:
https://github.com/acros/cocos2dx_qte
之前在3.6上自己做着玩,没出现什么问题。昨天看到3.7整合了bullet就升级了。
升级方法也很简单···因为没改底层,索性用3.7新建了一个同名的工程,然后把Class和Resource都拷过去重加了一遍(话说3.7内存管理方式有改动? CC_CONSTRUCT_ACCESS都变成public了)。
然而出现了一个奇怪的bug,一晚上愣是没看出原因,问题是这样的:
自定义了一个MainGameScene,继承自Scene。
MainGameScene类成员变量就多了两个RefPtr
创建过程都是正常的。奇怪的是第一次更新Scene时问题来了,读取到的_navMesh和_navMeshDebugCamera竟然是两个RefPtr的地址。
按内存分布说,两个RefPtr指针才是在派生类末端8字节,Navmesh有关的两个指针在基类末端,两个RefPtr之前。
我试着把加进去的两个RefPtr去掉,果然就好了····
又试了下关闭CC_USE_NAVMESH,和预料中一样····这次前面的成员变量_physics3DWorld地址和RefPtr的一样了···
为啥这个内存地址如此诡异,实在想不出原因,哪位能提点下,谢过先了····
VS用的 2013 Community 12.0.31101.0 Update4,难道有BUG?
图中可以看到,mGameLayer和mUiLayer两个RefPtr指针和_navMesh/_navMeshDebugCamera
