**編輯 我做了一些調試,並將名稱「企鵝」更改爲不存在的圖像文件,奇怪的是,有時當我編譯我會得到帶有x的方形圖標,這意味着具有該名稱的文件未找到,但其他時間,此錯誤框甚至不會顯示。奇怪的是,即使這個錯誤框沒有顯示出來(意味着程序沒有嘗試定位圖像文件),命中檢測仍然存在,並且「隱形」企鵝仍然可能死亡 **更新到Xcode 7.2.1後不加載圖像
I最近從6.4版更新了我的Xcode。?到7.2.1。一旦這樣做,我的一些圖像將不再加載。奇怪的是,圖像(在模擬器上編譯遊戲時)偶爾會加載,偶爾也不會顯示。另外,我的SpriteKit粒子發射器也沒有加載。
我的圖像全部位於支持文件夾內,並標記爲「[email protected]」。此外,圖像全部以編程方式實例化/插入到遊戲中。
Esentially我創建一個SKSpriteNode稱爲英雄像這樣:
-(IBAction)startGame:(id)sender{
hero.alpha = 1;
.....
}
我:
characterName = @"penguin";
hero = [SKSpriteNode spriteNodeWithImageNamed:characterName];
hero.position = CGPointMake(self.frame.size.width*0.5, self.frame.size.height*0.5);
hero.physicsBody = [SKPhysicsBody bodyWithTexture:hero.texture size:hero.texture.size];
hero.physicsBody.dynamic=YES;
hero.physicsBody.friction=NO;
hero.physicsBody.allowsRotation=NO;
hero.physicsBody.categoryBitMask = heroCategory;
hero.physicsBody.contactTestBitMask = enemyCategory;
hero.physicsBody.collisionBitMask = 0;
hero.physicsBody.usesPreciseCollisionDetection = YES;
hero.alpha = 0;
[mainLayer addChild:hero];
然後使英雄visable,後來我在遊戲開始時改變SKSpriteNode的alpha以類似的方式製作我的許多其他圖像。
一個會發生什麼的例子是,我第一次編譯遊戲時,企鵝映像可能會正確加載,然後我將停止構建並重新編譯它,而企鵝將不再顯示這一次,然後如果我停下來,並重建它,企鵝可能是可見再次,等等....
這我如何實現我的粒子發射器:
-(void)addFeathers: (CGPoint) position{
if (soundEnabled==TRUE) {
[poofSound play];
}
NSString *explosionPath2 = [[NSBundle mainBundle] pathForResource:@"FeatherAnimation1" ofType:@"sks"];
SKEmitterNode *explosion2 = [NSKeyedUnarchiver unarchiveObjectWithFile:explosionPath2];
explosion2.position = position;
[mainLayer addChild:explosion2];
SKAction *removeExposion2 = [SKAction sequence:@[[SKAction waitForDuration:10],[SKAction removeFromParent]]];
[explosion2 runAction:removeExposion2];
}
然後在後面的程序:
if([characterName isEqualToString:@"penguin"]){
[self addFeathers:deadPos];
}
該項目可以在下面的鏈接中找到:https://github.com/cyrusbehr/Dodge.git
我理解這個應用程序是用不好的編程習慣做,但它只是我的第一個。我真的想解決這些問題,所以我可以把遊戲放回到appstore!
任何幫助,非常感謝。
我試着把我所有的圖片放在我的Images.xcassets文件夾中,但是這似乎沒有解決問題。除了將圖像拖入Images.xcassets文件夾以外,是否需要執行任何形式的配置(或更改任何代碼)? – AppD3veloper
你沒有。如果您在資產目錄「Player」中調用圖像,而不是像SKSpriteNode(imageNamed:「Player」)那樣調用它,它會自動獲取正確的圖像(@ 2x,@ 3x)圖像。 Apple建議使用資產目錄以獲得最佳性能和組織。 – crashoverride777
關於你的問題,很難通過查看代碼來判斷。你知道哪條線可能導致問題? – crashoverride777