这是我的代码:
void SaveHandler::saveGrid(TileGrid &grid, const char * Filename, bool saveToSceneFile)
{
pugi::xml_node gridNode;
for (int L = 0; L < grid.m_tileLayers.size(); L++)
{
for (int C = 0; C < grid.m_tileLayers[L].size(); C++)
{
for (int R = 0; R < grid.m_tileLayers[L][C].size(); R++)
{
std::string nodeName = "T" + std::to_string(L) + std::to_string(C) + std::to_string(R);
if (grid.m_tileLayers[L][C][R].getisValid() == false) { break; }
pugi::xml_node tileNode = gridNode.append_child(nodeName.c_str());
tileNode.append_attribute("Name") = grid.m_tileLayers[L][C][R].getTextureName().c_str();
tileNode.append_attribute("PosX") = C;
tileNode.append_attribute("PosY") = R;
}
}
}
if (!saveToSceneFile)
{
std::string savePath = std::string(GridsSaveLocation) + Filename + ".xml";
pugi::xml_document doc;
doc.append_child("Grid") = gridNode; //TODO append grid node into the file
doc.save_file(savePath.c_str());
}
else
{
std::string savePath = std::string(ScenesSaveLocation) + Filename + ".xml";
pugi::xml_document doc;
if(!doc.load_file(savePath.c_str()))Log("Grid Path not found", "SaveHandler.cpp", Type::Error);
pugi::xml_node scene = doc.child("Scene");
scene.append_child("Grid") = gridNode;
doc.save_file(savePath.c_str());
}
}
我第一次在一个大型2D游戏项目中工作,我正在尝试创建一个save grid功能,该功能可以在特定场景内保存瓷砖网格。
这实际上是创建一个名为gridNode的节点并将网格中的每个单个图块保存为它的子节点,但是这里的问题是我无法将该节点添加到XMLdocument中(请忽略if语句,该问题在else语句中)
scene.append_child("Grid") = gridNode;
在这里似乎没用,我不能做
gridNode = scene.append_child("Grid");
因为这将清空gridNode,然后将其附加到文档中
我的问题是我如何将现有节点附加到文档或另一个节点,我尝试了append_copy函数,但它也不起作用
(我很抱歉,如果我的英语有点不好,我不是英语母语人士)