【问题标题】:Cocos2d: How Can I Programatically Set Gid Properties To A CCTMXTiledMapCocos2d:如何以编程方式将 Gid 属性设置为 CCTMXTiledMap
【发布时间】:2014-06-30 13:39:07
【问题描述】:

在 Tiled 中制作了基于 TMX 的地图后,我想随着游戏的进行以编程方式更改图块的某些属性。

这是我尝试过的代码,但它不起作用。但我将它包含在这里是为了展示我想要实现的逻辑......

NSDictionary *currentProperties = [_tileMap propertiesForGID:tileToMarkFalling];
[currentProperties[@"Falling"] setString:@"True"];
[_tileMap propertiesForGID:tileToMarkFalling] = currentProperties;

这里抛出的错误是"Expression is not assignable"

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

【问题讨论】:

    标签: properties cocos2d-iphone tmx tiled


    【解决方案1】:

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

    请注意,字典不是存储图块逻辑信息的理想方式,如果您检查每个图块的属性字典是否“下降”并且可能每帧的其他值,字典查找开销会降低您的性能,如果您可能会非常严重有成千上万的瓷砖。

    【讨论】:

    • 我喜欢这个答案,您提供了很多信息供我考虑,并可能获得一些性能。这一点特别重要,因为每次我的 char 移动一个图块时,我都会解析地图的每个图块。然后我检查每个图块,看看它们是否符合这本字典中的特定属性。我会考虑改变它。但是为了什么?谢谢
    猜你喜欢
    • 2018-03-19
    • 2021-06-22
    • 2023-01-03
    • 1970-01-01
    • 2021-05-20
    相关资源
    最近更新 更多