私のゲームのアイテムデータベースを作成しようとしています。私はそれがゲームのすべてのアイテム(武器、消耗品、鎧など)を含むようにします。しかし、私はそれらのすべてがitemという親クラスから継承することを望みます。私が見たすべての例は、単一のアイテムクラスと継承を使用していません。XMLのUnityアイテムデータベース
XMLをデシリアライズすると、すべてが正しいタイプになるような方法でデータベースを作成する方法はありますか?あなたはタイプを指定する属性を追加することができ
<?xml version="1.0" encoding="UTF-8"?>
<ItemCollection>
<Items>
<DatabaseItem name="Sword">
<Damage>20</Damage>
</DatabaseItem>
<DatabaseItem name="Wand">
<Damage>10</Damage>
</DatabaseItem>
</Items>
</ItemCollection>
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Xml.Serialization;
using System.IO;
[XmlRoot("itemCollection")]
public class ItemContainer
{
[XmlArray("Items")]
[XmlArrayItem("DatabaseItem")]
public List<DatabaseItem> items = new List<DatabaseItem>();
public static ItemContainer Load(string path)
{
TextAsset _xml = Resources.Load<TextAsset>(path);
XmlSerializer serializer = new XmlSerializer(typeof(ItemContainer));
StringReader reader = new StringReader(_xml.text);
ItemContainer items = serializer.Deserialize(reader) as ItemContainer;
reader.Close();
return items;
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Xml;
using System.Xml.Serialization;
public class DatabaseItem
{
[XmlAttribute("title")]
public string title;
[XmlAttribute("damage")]
public float damage;
}
私が探していたもの –