0 iphone scripting cocos2d-iphone
我试图理解在iphone游戏开发中使用像lua这样的脚本语言的好处(例如使用cocos2d),如果它可以帮助解决我的问题(并提高我的编码技能).在我的游戏中,我有以下代码:
-(void)MenuItem:(CCMenuItem *) menuItem {
switch (menuItem.tag) {
case 1:
[[CCDirector sharedDirector] replaceScene:[Level1 scene]];
break;
case 2:
[[CCDirector sharedDirector] replaceScene:[Level2 scene]];
break;
case 3:
[[CCDirector sharedDirector] replaceScene:[Level3 scene]];
break;
case 4:
[[CCDirector sharedDirector] replaceScene:[Level4 scene]];
break;
case 5:
[[CCDirector sharedDirector] replaceScene:[Level5 scene]];
break;
case 6:
[[CCDirector sharedDirector] replaceScene:[Level6 scene]];
break;
case 7:
[[CCDirector sharedDirector] replaceScene:[Level7 scene]];
break;
case 8:
[[CCDirector sharedDirector] replaceScene:[Level8 scene]];
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
该函数的问题是如果我有50个级别,这个函数将需要3页代码.我想用以下代码替换整个函数:
-(void)MenuItem:(CCMenuItem *) menuItem {
[[CCDirector sharedDirector] replaceScene:[<script> @"Level" + menuItem.tag</script> scene]];
}
Run Code Online (Sandbox Code Playgroud)
其中script>/script>是一种嵌入脚本语言的方法,该脚本语言将连接字符串"Level"和级别编号,从而创建类的名称.所以这个函数将与级别数无关.所以我的问题是:脚本可以帮忙吗?如果是,它怎么能帮助,如果没有,是否有解决方案呢?
我建议这个:
NSString *levelToLoad = [NSString stringWithFormat:@"Level%d", menuItem.tag];
[[CCDirector sharedDirector] replaceScene:[NSClassFromString(levelToLoad) scene]];Run Code Online (Sandbox Code Playgroud)
是的,我只是节省了你打字的时间.
| 归档时间: |
|
| 查看次数: |
175 次 |
| 最近记录: |