Unity

[Unity] 유니티 XML 데이터 읽기, 파싱, 파서. (unity xml parser c#, xml data load)

정보처리마법사 2017. 10. 12. 11:02
반응형

 

 

[Unity] 유니티 XML 데이터 읽기, 파싱, 파서.  (unity xml parser c#, xml data load)

 

 

유니티 XML 데이터 읽어오기.

 

 

 

이모티콘・01・고양이 마멋 친구들 - Google Play 앱

이모티콘・01・고양이 마멋 친구들: 무료 이모티콘, 회원가입 없이! 카톡, SNS로 감정 표현이 쉬워져요. 귀여움 가득, 대화창을 더 풍성하게!

play.google.com

 

 

안녕하세요 정보처리마법사 입니다.

 

이번 포스팅의 주제는 유니티에서 XML 데이터를 읽어오기에 관한 내용입니다.

최대한 심플하게 예제를 해보겠습니다.

 

 

간단하게 TestItem.xml 파일을 아이템 세개로 간단하게 생성하였습니다.

xml파일 만드는 방법은 여러가지가 있으며 각자의 기호에 맞게 사용하면 되겠습니다.

 

 

 

 

 

Ctrl + C  &  Ctrl + V

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <TestItem>
    <id>1</id>
    <name>potion1</name>
    <cost>100</cost>
  </TestItem>
  <TestItem>
    <id>2</id>
    <name>potion1</name>
    <cost>200</cost>
  </TestItem>
  <TestItem>
    <id>3</id>
    <name>potion3</name>
    <cost>300</cost>
  </TestItem>
</dataroot>
cs
 

 

 

 

 

 

 

유니티를 실행해서 XML Manager 라는 빈 게임오브젝트를 생성하고

XMLManager 라는 스크립트를 하나 생성하였습니다.

 

 

 

 

 

 

 

 

 

 

XML파일은 Resources/XML 폴더안에 위치 시켰습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ctrl + C  &  Ctrl + V 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System.Xml;
using UnityEngine;
 
public class XMLManager : MonoBehaviour
{
    // Resources/XML/TestItem.XML 파일.
    string xmlFileName = "TestItem";
 
    void Start()
    {
        LoadXML(xmlFileName);
    }
 
    private void LoadXML(string _fileName)
    {
        TextAsset txtAsset = (TextAsset)Resources.Load("XML/" + _fileName);
        XmlDocument xmlDoc = new XmlDocument();
        Debug.Log(txtAsset.text);
        xmlDoc.LoadXml(txtAsset.text);
 
        // 하나씩 가져오기 테스트 예제.
        XmlNodeList cost_Table = xmlDoc.GetElementsByTagName("cost");
        foreach (XmlNode cost in cost_Table)
        {
            Debug.Log("[one by one] cost : " + cost.InnerText);
        }
 
        // 전체 아이템 가져오기 예제.
        XmlNodeList all_nodes = xmlDoc.SelectNodes("dataroot/TestItem");
        foreach (XmlNode node in all_nodes)
        {
            // 수량이 많으면 반복문 사용.
            Debug.Log("[at once] id :" + node.SelectSingleNode("id").InnerText);
            Debug.Log("[at once] name : " + node.SelectSingleNode("name").InnerText);
            Debug.Log("[at once] cost : " + node.SelectSingleNode("cost").InnerText);
        }
    }
}
 
cs
 

 

 

 

 

 

주석에 설명은 모두 있으니 설명은 패스~

실행해보니 아래 스샷과 같이 로그가 잘 찍힙니다.

 

 

 

 

 

 

 

 

 

 

한가지 더!

모든 노드 안의 XmlNode 타입의 안쪽에서 또 반복문을 돌리고 싶을 땐

foreach문 안쪽에서 다시 XmlElement 타입으로 반복문을 한 번 더 돌리면 됩니다.

 

Ctrl + C  &  Ctrl + V 

1
2
3
4
5
6
7
        foreach (XmlNode node in all_nodes)
        {
            foreach(XmlElement element in node)
            {
                Debug.Log(element.InnerText);
            }
        }
cs

참고 포스팅 : http://hyunity3d.tistory.com/511

 

유니티 xml 파일 로드

xml로 된 데이터 파일은 모두 string 형이므로 적절히 형변환을 해줘서 사용해야됨.

hyunity3d.tistory.com

 

 

이상으로 포스팅을 마칩니다. 감사합니다.

 

 

 

 

[무료게임쿠폰] 두더지게임: 리그 오브 두더지

[무료게임쿠폰] 두더지게임: 리그 오브 두더지 구글플레이스토어 쿠폰사용 O, 앱스토어 쿠폰사용 X (앱스토어 정책상) 10만골드 가족 20만골드 건강 30만골드 자유 40만골드 행복하자 50만골드 아프

ssscool.tistory.com

 

 

[무료게임쿠폰] 방구키우기: 리그 오브 방구 타이밍 배틀

[무료게임쿠폰] 방구키우기: 리그 오브 방구 타이밍 배틀 구글플레이스토어 쿠폰사용 O, 앱스토어 쿠폰사용 X (앱스토어 정책상) 2022년 07월 29일 이후 업데이트버전 v.1.200.78 이후 버전으로 업데이

ssscool.tistory.com

 

 

[무료게임쿠폰] 뽑기 키우기: 리그 오브 뽑기

[무료게임쿠폰] 뽑기 키우기: 리그 오브 뽑기 다이아 100개 쿠폰 테슬라 다이아 200개 쿠폰 건강 다이아 300개 쿠폰 부자 다이아 400개 쿠폰 행복 다이아 600개 쿠폰 자유 다이아 700개 쿠폰 휴식 다이

ssscool.tistory.com

 

 

똥 피하기: 리그 오브 똥 - Google Play 앱

이 재미있는 가족 친화적인 게임에서 똥을 피하세요! 깨끗하게 유지하며 즐기세요!

play.google.com

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형