Unity:XMLで書かれた外部テキストファイルからテキストを読み込む方法

UnityでXMLを使い、外部からテキストを読み込む方法です。

 

Unityでテキストを外部ファイルから読み取りたい、つまりテキストだけのファイルと

コードのプログラムに分けたい時にはXMLあるいはJsonを使うと便利です。

 

今回はXMLを使う方法を解説したいと思います。

 

さてまず最初にXMLとはマークアップ言語の一つです。

ここでちょっとだけマークアップ言語について説明します。

 

マークアップ言語とは「タグ」と呼ばれる特定の文字列で地の文に情報の意味や構造、

装飾などを埋め込んでいく言語のことで、XMLはユーザが独自のタグを指定できることから

マークアップ言語を作成するためのタグ言語とも言われています。

 

ここではとりあえず任意のタグをつけれうることと構造化出来ることをを押さえておけば大丈夫です。

また後に出てくる例を見ていただければなんとなくわかると思います。

 

さっそくUnityでXMLを使う方法を解説していきます。

 

1:XMLを解析するプログラム

まず今回一番重要となるXMLを解析するプログラムです。

一番簡単な方法としては、ここで提供されているプログラムを使うのが一番簡単です。

 

上記のサイトに飛ぶとプログラムが乗っているのでそれを改良して使うのが一番簡単です。

 

見ていただければなんとなくわかると思うので、重要なとこだけ解説したいと思います。

 

2:コードの簡単な解説

 

  XmlDocument xmlDoc = new XmlDocument(); // xmlDoc is the new xml document.
  xmlDoc.LoadXml(GameAsset.text); // load the file.

まず上のコードはXMLで書かれたtextを読み込むための文です。

一番上で初期化し、2番目コードの引数に読み込みたいtextファイルを指定しています。

XmlNodeList levelsList = xmlDoc.GetElementsByTagName("level");

Levelというタグを読み込み、それ以下の要素をlistに格納しています。

サンプルでのLevelのタグとは

<level>
    <name>Level 1 (xml)</name>

の<level>の部分です。

次にそのリストの各要素を読み込むため、

 foreach(XmlNode levelInfo inlevelsList)

で先ほどのListの要素1つ1つを繰り返しで呼び出しています。

XmlNodeList levelcontent = levelInfo.ChildNodes;

その要素の子供のノードつまり階層が下の要素をlevelcontentに代入しています。

 foreach(XmlNode levelsItens inlevelcontent)

先ほどと同じようにlevelcontentに格納された1つ1つの要素を

繰り返しこれ以降のプログラムをそれぞれに実行しています。

if(levelsItens.Name == "name")
    {
     obj.Add("name",levelsItens.InnerText); // put this in the dictionary.
    }

上のコードでタグがnameである所に書かれている文字列を

objに登録しています。例では

<name>Level 1 (xml)</name>

が最初に呼び出されているので、このコードでLevel 1 (xml)”という文字列がでobjに登録されています。

以下は上と同じようにタグで判別->そこに書かれている文字列をobjに登録を繰り返しています。

以上のようにXMLを使うとタグで構造化し、簡単に外部テキストファイルから

テキストを読み込むことができるのでとても重宝します。

これを使って物語のあるゲームをどんどん作りたいですね。

以上、UnityでXMLで書かれた外部テキストファイルからテキストを読み込む方法でした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です