我正在使用Spritekit
在Xcode工作,我正在努力建立一个单独的课程来显示高分。
第1级有一个名为highscore
(@synthesize highscor = highscore;
)的属性,顾名思义,记录得分最高,但我无法弄清楚如何将其发送到高分类。
JKGLevel1 *class1Instance = [[JKGLevel1 alloc] init];
int x = class1Instance.highscor;
我是怎么尝试的,但当我离开1级并进入高分课时,它一直告诉我高分是0。
答案 0 :(得分:0)
做这样的事情:
HighScoreClass
制作名为lavel1HighScore
的媒体资源。 (如果你不想为每个级别创建属性,那么你可以通过数组来实现。:))像:
JKGLevel1 *class1Instance = [[JKGLevel1 alloc] init];
HighScoreClass *highScore = [[HighScoreClass alloc] init];
highScore.lavel1HighScore = class1Instance.highscor;
希望这会有所帮助.. :)
答案 1 :(得分:0)
首先,你不需要@sythesize任何东西,但那只是一个旁边。您需要做的是创建一个单例类,即:一个具有仅实例化一次的属性的类,可以随意访问代码中的任何地方。
例如,我使用它来存储帐户信息:
在.m文件中
+ (id)sharedManager {
static AppManager *sharedMyManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedMyManager = [[self alloc] init];
});
return sharedMyManager;
}
- (id)init {
return [super init];
}
.h文件中的
#import <Foundation/Foundation.h>
#import <Accounts/Accounts.h>
@interface AppManager : NSObject
@property (nonatomic, retain) ACAccount *twitterAccount;
@property (nonatomic, retain) NSMutableArray *arrayOfAccounts;
+ (id)sharedManager;
@end
**然后在我想要使用的任何文件中:**
AppManager *sharedManager;
sharedManager = [AppManager sharedManager];
NSString *usrName = sharedManager.twitterAccount.username;
希望这实际上对你有帮助。还有其他方法可以通过创建一个你仔细管理的类而不用这个单例废话来实现这一点,但这是一种更简洁的方法。
答案 2 :(得分:0)
您可以将分数放在plist中以便在viewdidload中读取,或者是否有理由将一个实时分数对象从一个级别传递到另一个级别 -
我建议你把你的分数放在一个单独的类中(只是一个带有标题和方法的普通类(.h&amp; .m),只需让你的所有级别(类)可以使用该类,这很容易通过以下代码完成:
... levelx.h
#import <UIKit/UIKit.h>
@class Class_scores;
@interface LevelxViewController : UIViewController <> {
}
@property (nonatomic, strong) Class_scores *highscore_class;
不用说你需要在(high_score)类中定义一个函数来返回高分并从你的关卡中调用它。