我一直在尝试从Cocos2D 1.1.0-pre-> 2.0rc0a 升级过去3天,但这是我迄今为止制作应用时遇到的最困难的任务。所以它在Cocos2D 1.1中工作得很好,我的图像加载,一切正常等等......现在在 2.0rc0a 它只是进入黑屏YET我的所有方法都被调用了!
以下是我正在使用的代码,设备,日志等的一些信息......
Xcode版本
1. Xcode version: 4.3.2
在
上测试的设备2. A) Devices: iPhone 4S - 5.0.1 (doesn't work)
B) iPad 3 - 5.1 (doesn't work)
C) iPhone 5.1 simulator (doesn't work)
D) iPad 5.1 simulator (doesn't work)
我的代码
我有一个UIViewController类,它包含CCGLView。然后我有一个CCLayer课程,这是实际游戏的一切。 CCLayer类中的代码很好,因为它适用于Cocos2D 1.1.0-pre,所以我将发布UIViewController类的代码:
- (void)viewDidLoad {
[super viewDidLoad];
// Create an CCGLView with a RGB565 color buffer, and a depth buffer of 0-bits
CCGLView *glView = [CCGLView viewWithFrame:[self.view bounds]
pixelFormat:kEAGLColorFormatRGB565 //kEAGLColorFormatRGBA8
depthFormat:0 //GL_DEPTH_COMPONENT24_OES
preserveBackbuffer:NO
sharegroup:nil
multiSampling:NO
numberOfSamples:0];
director_ = (CCDirectorIOS*) [CCDirector sharedDirector];
director_.wantsFullScreenLayout = YES;
[director_ setDisplayStats:YES];
[director_ setAnimationInterval:1.0/60];
[director_ setView:glView];
[director_ setDelegate:self];
[director_ setProjection:kCCDirectorProjection2D];
[director_ setDepthTest:FALSE];
if(![director_ enableRetinaDisplay:YES])
CCLOG(@"Retina Display Not supported");
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];
[CCFileUtils setiPhoneRetinaDisplaySuffix:@"@2x"];
[CCFileUtils setiPadSuffix:@"-72"];
[CCFileUtils setiPadRetinaDisplaySuffix:@"@2x~ipad"];
[CCTexture2D PVRImagesHavePremultipliedAlpha:YES];
[director_ pushScene:[CCSceneGame scene]];
}
然后我在CCLayer类中使用了这个基本的CCScene方法:
+(CCScene *) scene
{
CCScene *scene = [CCScene node];
CCSceneGame *layer = [CCSceneGame node];
[scene addChild:layer];
return scene;
}
大部分代码也直接从模板项目中复制。我也在.h中声明了代表。
控制台输出
这是我在5.0.1 iPhone 4S上测试的控制台:
2012-03-31 17:14:54.484 App[56089:707] cocos2d: OS version: 5.0.1 (0x05000100)
2012-03-31 17:14:54.485 App[56089:707] cocos2d: GL_VENDOR: Imagination Technologies
2012-03-31 17:14:54.486 App[56089:707] cocos2d: GL_RENDERER: PowerVR SGX 543
2012-03-31 17:14:54.486 App[56089:707] cocos2d: GL_VERSION: OpenGL ES 2.0 IMGSGX543-63.14.2
2012-03-31 17:14:54.488 App[56089:707] cocos2d: GL_MAX_TEXTURE_SIZE: 4096
2012-03-31 17:14:54.488 App[56089:707] cocos2d: GL_MAX_TEXTURE_UNITS: 8
2012-03-31 17:14:54.489 App[56089:707] cocos2d: GL_MAX_SAMPLES: 4
2012-03-31 17:14:54.489 App[56089:707] cocos2d: GL supports PVRTC: YES
2012-03-31 17:14:54.490 App[56089:707] cocos2d: GL supports BGRA8888 textures: YES
2012-03-31 17:14:54.490 App[56089:707] cocos2d: GL supports NPOT textures: YES
2012-03-31 17:14:54.491 App[56089:707] cocos2d: GL supports discard_framebuffer: YES
2012-03-31 17:14:54.491 App[56089:707] cocos2d: compiled with Profiling Support: NO
2012-03-31 17:14:54.492 App[56089:707] cocos2d: cocos2d v2.0.0-rc0
2012-03-31 17:14:54.493 App[56089:707] cocos2d: Using Director Type:CCDirectorDisplayLink
2012-03-31 17:14:54.745 App[56089:707] cocos2d: CCTexture2D: Using RGBA888 texture since image has no alpha
2012-03-31 17:14:54.891 App[56089:707] cocos2d: CCTexture2D. Can't create Texture. cgImage is nil
2012-03-31 17:14:54.892 App[56089:707] cocos2d: Couldn't add image:particleTexture.png in CCTextureCache
2012-03-31 17:14:54.999 App[56089:707] cocos2d: animation started with frame interval: 60.00
其他几点
如果有人知道发生了什么事,请告诉我!!!
谢谢!
答案 0 :(得分:2)
我一直在重复自己,但唉:
如果您需要更新现有项目中的cocos2d,最重要的是删除 Xcode项目和Finder中的所有cocos2d文件。然后移动新的cocos2d版本,并重新添加它。
否则,您可能最终仍会在项目中使用旧的cocos2d文件,或者缺少新添加的文件。
如果屏幕保持黑色,则可能表示着色器出现问题。新的cocos2d版本将所有着色器作为标题(.h)文件中的字符串。如果你没有添加它们,它们将无法正常工作。不确定这是否会给你一个黑屏或直接崩溃。
最后,由于Cocos2D 2.0使用OpenGL ES 2.0,您必须重写项目中的所有自定义OpenGL绘图代码。
你应该验证的其他事情是glView不是nil,并且可能在CCDirector的更新(访问/绘制)方法中设置一个断点,以检查它是否实际访问所有节点并正确绘制它们。
答案 1 :(得分:1)
尽管@ LearnCocos2D的一切都是真的。对我来说真正的解决方法是在.h中声明一个IBOutlet CCGLView并通过Interface Builder连接它。
我认为如果您使用较旧的项目然后因某些奇怪的原因升级到Cocos2D可能会出现问题。
因此,不是通过编程方式进行,而是通过Interface Builder进行。