2016-06-26 18 views
1

私はUnity3D用のメソッドを作成しようとしていますが、XMLファイルを使用してUIを生成できます。つまり、各ボタンとラベルに名前を付けるのではなく、「進捗ボタン」や「大きなテキスト」などの一般的な名前を指定できます。次に、C#スクリプトを使用して、XMLファイルの冗長な名前に一致させます。Unity 3D C#Strings.XMLメソッド

私はチュートリアル、サンプル、ガイドを幅広く検索してきましたが、私が見つけたものは、私が達成しようとしているものが過度のものでした。

理想的には、私は、XMLファイルに次の構造を使用してXMLファイルを提供したいと思います:

<?xml version="1.0" encoding="utf-8"?> 
<strings> 
    <string name="progressBtn">Next</string> 
    <string name="reverseBtn">Back</string> 
    <string name="largeText">This is Large Text</string> 
</strings> 

私は動的テキストオブジェクトののプロパティにアクセスすることにより、団結のテキストを変更する方法を知っているので、私そのステップを心配していません。私が現在持っているものは次のとおりです。

using UnityEngine; 
using System.Collections; 
using System.Xml; 
using System.IO; 

public class textParser : MonoBehaviour 
{ 

public TextAsset targetXMLFile; 
public GameObject uiObjectText; 
string targetString; 

// Use this for initialization 
void Start() 
{ 
    checkFile();//Check for strings file. 
    checkTarget(uiObjectText.name);//Check for the object name in the GUI object 
} 

// Update is called once per frame 
void Update() 
{ 
    //TODO 
} 

//Check for strings file. 
void checkFile() 
{ 
    if (targetXMLFile == null) //If is Null, Log an Error 
    { 
     print("Error: target text file not loaded!"); 
    } 
    else // If something, log the file name 
    { 
     print(targetXMLFile.name + " Target text file loaded!"); 
    } 
} 

//Check for the object name in the GUI object 
void checkTarget(string target) 
{ 
    if (target == null) //If is Null, Log an Error 
    { 
     print("Error: Unable to extract target ui object name!"); 
    } 
    else// if something, Log the GUI Object name 
    { 
     print("Found: " + target + " In GUI."); 
    } 
} 
} 

明らかに非常に基本的ですが、それは機能します。私は私の検索(私は理解する文字列の一致)を達成するためにXMLライブラリを使用する必要があることを知っている。そのステップに進むことは、私を見逃すことです。

このXMLの使用に向けたチュートリアルは、私が見たいと思っているか、誰かが私にこれを達成するためにどのような方法でアクセスする必要があるかというアイデアを与えることができます。個人的には、誰かがサンプルコードへのリンクを提供できるなら、私がやろうとしていることの背後にある冗長なプロセスを理解したいと思います。

ありがとうございました!

答えて

0

あなたは、.NETからXml.Serializationを使用することができます。

https://unitygem.wordpress.com/xml-serialisation/

+0

のようなものを試してみてください私のXMLファイルはシリアライズされていませんが、データは入っていません。理由はわかりません。私は詳細をつけて別の質問を開きます。助けてくれてありがとう! – VanDroid

0

は、チュートリアルでは、はるかに明確にし、ポイントに私がきたものであることがよく、この

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 
using System.Xml.Linq; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string header = "<?xml version=\"1.0\" encoding=\"utf-8\"?><strings></strings>"; 
      XDocument doc = XDocument.Parse(header); 
      XElement strings = (XElement)doc.FirstNode; 

      List<List<string>> buttons = new List<List<string>>() { 
           new List<string>() {"progressBTn", "Next"}, 
           new List<string>() {"reverseBth", "Back"}, 
           new List<string>() {"largeText", "This is Large Text"} 
      }; 

      foreach(List<string> button in buttons) 
      { 
       strings.Add(
        new XElement("string", new object[] { 
         new XAttribute("name", button[0]), 
         button[1] 
        })); 
      } 

     } 
    } 
} 
関連する問題