Properties Cocos2d:如何通过编程将Gid属性设置为CCTMXTiledMap

Properties Cocos2d:如何通过编程将Gid属性设置为CCTMXTiledMap,properties,cocos2d-iphone,tmx,tiled,Properties,Cocos2d Iphone,Tmx,Tiled,在以平铺方式制作基于TMX的地图之后,我希望随着游戏的进行,通过编程更改平铺的某些属性 这是我尝试过的代码,但不起作用。但我把它放在这里是为了证明我想要实现的逻辑 NSDictionary *currentProperties = [_tileMap propertiesForGID:tileToMarkFalling]; [currentProperties[@"Falling"] setString:@"True"]; [_tileMap propertiesForGID:tileToMar

在以平铺方式制作基于TMX的地图之后,我希望随着游戏的进行,通过编程更改平铺的某些属性

这是我尝试过的代码,但不起作用。但我把它放在这里是为了证明我想要实现的逻辑

NSDictionary *currentProperties = [_tileMap propertiesForGID:tileToMarkFalling];
[currentProperties[@"Falling"] setString:@"True"];
[_tileMap propertiesForGID:tileToMarkFalling] = currentProperties;
这里抛出的错误是“表达式不可赋值”


如何以编程方式设置这些属性,谢谢。

最后一行语法不正确,您不能为选择器/消息/函数调用(结果)赋值。事实上,cocos2d将TMX属性存储为不可变字典。不幸的是,您无法修改它们。您必须获取属性,并将它们以可变字典或其他方式存储在您自己的类中


请注意,字典并不是存储磁贴逻辑信息的理想方式,如果您每帧检查每个磁贴的属性dict是否“下降”,以及可能的其他值,字典查找开销将降低性能,如果您有数千个磁贴,则可能会非常严重。

我喜欢这个答案,你提供了很多信息让我考虑,并可能获得一些性能。这一点特别重要,因为每当我的char移动一个图块时,我都会解析地图的每个图块。然后我检查每个磁贴,看看它们是否符合这个字典中的特定属性。我会考虑改变它。但是为了什么?谢谢