gpt4 book ai didi

ios - Cocos2d : how to share player data between scenes

转载 作者:行者123 更新时间:2023-11-29 11:10:52 26 4
gpt4 key购买 nike

我有一个派生自 CCNode 的 PlayerData 类,我想将它作为静态单例实例在游戏的各个场景之间共享。

我尝试了以下实现:

#import <Foundation/Foundation.h>
#import "cocos2d.h"
@interface PlayerData : CCNode {

}

@property (readwrite, nonatomic) int data;
+(id) playerData;
+(PlayerData*) sharedPlayerData;

#import "PlayerData.h"
@implementation PlayerData
@synthesize data;
static PlayerData* instanceOfPlayerData;

+(id) playerData
{
if(instanceOfPlayerData==nil){
return [[self alloc] init];
}else {
return [self sharedPlayerData];
}
}

+(PlayerData*) sharedPlayerData{
NSAssert(instanceOfPlayerData != nil, @"PlayerData instance not yet initialized!");
return instanceOfPlayerData;
}


-(id) init
{
if ((self = [super init]))
{
instanceOfPlayerData=self;
data=0;
}
return self;
}
@end

分配它的正确位置在哪里?我想过将它添加到 AppDelegate 类并访问它,但我无法完全理解如何做。

我看到我可以从 sharedDirector 访问一个委托(delegate)值,但我认为这不是正确的值,除非我必须将它转换为我的 AppDelegate 类。有什么建议吗?

[[CCDirector sharedDirector] delegate];

这是来自模板的 AppDelegate 类:

#import <UIKit/UIKit.h>
#import "cocos2d.h"

@interface AppController : NSObject <UIApplicationDelegate, CCDirectorDelegate>
{
UIWindow *window_;
UINavigationController *navController_;

CCDirectorIOS *__unsafe_unretained director_; // weak ref
}

@property (nonatomic) UIWindow *window;
@property (readonly) UINavigationController *navController;
@property (unsafe_unretained, readonly) CCDirectorIOS *director;

@end

PS:我正在使用启用了 ARC 的 Cocos2d v2.x

最佳答案

这是我在游戏中使用的很棒的单例教程,效果很好:http://getsetgames.com/2009/08/30/the-objective-c-singleton/

关于ios - Cocos2d : how to share player data between scenes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11636234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com