유니티에서 xml 파일 불러오는 방법


방법만 간단하게 작성하겠습니다.

각자 만든 xml 데이터 클래스 타입이 있다고 치고, 그걸 사용하서 Serializer를 사용해서 불러오는 방법입니다. 


  string filePath = string.Empty;


        XmlSerializer serializer = new XmlSerializer(typeof(LanguageManager));

        TextAsset tAsset = Resources.Load("MultiLanguage") as TextAsset;

        using (var stream = new StringReader(tAsset.text))

        {

            return serializer.Deserialize(stream) as LanguageManager;

        }



저는 Xml 파일을 "MultiLanguage.xml" 이라고 지었으며 파일 위치는 Resources/ 아래에 저장해 뒀습니다.



이렇게 해서 불러오니까 Android 와 윈도우 환경에서는 잘 불러오네요. IOS 환경에서는 테스트 못해봤습니다.

아래는 제가 해서 잘 안되었던 경우입니다. 괜히 저처럼 삽질 하셨다면 그냥 위에 코드 사용하시면 될것같습니다. 


        string filePath = string.Empty;


#if UNITY_EDITOR

        filePath = Path.Combine(Application.dataPath, "Resources/MultiLanguage.xml");

#elif UNITY_ANDROID

        //string androidPath = "jar:file://" + Application.dataPath + "!/assets";

        filePath = Path.Combine(Application.streamingAssetsPath, "Resources/MultiLanguage.xml");

#endif


        if (File.Exists(filePath))

        {

            Application.Quit();

            XmlSerializer serializer = new XmlSerializer(typeof(LanguageManager));

            using (FileStream stream = new FileStream(filePath, FileMode.Open))

            {

                return serializer.Deserialize(stream) as LanguageManager;

            }

        }