유니티에서 코딩하면서 가장 좋아하는 기능중에 하나였던거 같다.

물론 유니티가 아니라 c#에서 쓰는거지만 어차피 난 유니티만 쓰니깐 유니티에서 쓰는법을 쓸거임


참고로 옛날에 썻던 네이버 블로그에 있던거 그대로 복붙함


c#에서 지원하는 xmlDocument클래스를 써서 xml데이터를 읽어올수 있는데

유니티에서 인스펙터로 끌어서 가지고 오려면 유니티에서 지원하는 TextAsset를 사용하면 된다.

물론 Resource.Load나 파일입출력으로 가지고 올 수도 있다.


아래는 랜덤한 철수를 뽑아오는 클래스다. 

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
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
using System.Xml;//xml 네임스페이스 using하기
 
public class XMLTEST : MonoBehaviour {
 
    [SerializeField]
    private TextAsset xmlTxt;//텍스트 에셋으로 가지고온 xml파일
    private XmlDocument xmlDoc;//텍스트로 가져온 파일을 xml도큐먼트로 변환
    private void Start ()
    {
        //text를 XmlDocument에 맞게 변환
        xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(xmlTxt.text);
 
        Debug.Log(getName());
    }
    
    public string getName()
    {
        XmlNodeList nodes = xmlDoc.SelectNodes("Name/familyName/name");//랜덤한 성씨
        string name = nodes[Random.Range(0, nodes.Count)].InnerText;
        name += xmlDoc.SelectSingleNode("Name/lastName/name").InnerText;//하나의 이름
 
        return name;//이름 출력
    }
}
 
cs


xml 파일은 이렇게 되어있다

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" ?>
<Name>
  <familyName>
    <name></name>
    <name></name>
    <name></name>
    <name></name>
    <name></name>
    <name></name>
    <name>안</name>
    <name>조</name>
  </familyName>
  
  <lastName>
    <name>철수</name>
  </lastName>
</Name>
 
cs


System.Xml의 msdn 문서 : https://msdn.microsoft.com/ko-kr/library/system.xml(v=vs.110).aspx

XML에 대한 위키문서 : https://ko.wikipedia.org/wiki/XML 


블로그 이미지

stuban

ㅇ.ㅇ

,