2017-09-27 2 views
1

XMLを使用して、テキストベースのアドベンチャーゲームの基本ファイルを保存しています。 XMLストリングは、インベントリー・ノードが作成されていないことを除いて保管します。私はクエストを保存するために同じプロセスを使用しています。クエストとクエストの完了は節約します。コードはXMLノードを作成せず、スキップします

//Create the "InventoryItems" child node to hold each InventoryItem node 
XmlNode inventoryItems = playerData.CreateElement("InventoryItems"); 
player.AppendChild(inventoryItems); 

//Create and "inventoryItem" node for each item in player's inventory 
foreach (InventoryItem item in this.Inventory) 
{ 
    XmlNode inventoryItem = playerData.CreateElement("InventoryItem"); 

    XmlAttribute idAttribute = playerData.CreateAttribute("ID"); 
    idAttribute.Value = item.Details.ID.ToString(); 
    inventoryItem.Attributes.Append(idAttribute); 

    XmlAttribute quantityAttribute = playerData.CreateAttribute("Quantity"); 
    quantityAttribute.Value = item.Quantity.ToString(); 
    inventoryItem.Attributes.Append(quantityAttribute); 

    inventoryItem.AppendChild(inventoryItems); 
} 

これは、インベントリノードとクエストノードを作成して保存するためのコードです。私はforeachステートメントでブレークポイントを設定します。コードはその文の中に入りますが、そのブロックの最初の行にはなりません。 XmlNode inventoryItem = playerData.CreateElement("InventoryItem");私はこの問題に悩まされています。

+1

あなたは' AppendChild'でコールを逆にしないでしょうか? –

+0

この呼び出しは、inventoryItemsをプレーヤノードの子ノードにしています。 – LukeDev

+0

そして、 'inventoryItem'の' inventoryItems'子を作るよりも... –

答えて

1

inventoryItemは、foreachステートメントの末尾にあるinventoryItemsの子になります。

inventoryItem.AppendChild(inventoryItems); 

は次のようになります。 - `inventoryItems.AppendChild`

inventoryItems.AppendChild(inventoryItem); 
関連する問題