2016-07-29 7 views
0

그래서 Unity에서 게임을하고 있는데 XML 관련 문제가 발생했습니다. XML 데이터베이스에서 데이터를 읽음으로써 항목을 만들 수있는 튜토리얼 덕분에 시스템을 설치했습니다. 하지만 한 가지 문제가 있습니다. 다음과 같이 내가 읽을 수 내 XML 파일을 설정하려면 : 그러나Unity의 XML 직렬화 - 배열에 다른 배열 항목이 들어 있습니까?

 <resistance> 
      <physical> 
       <phy>60.0</phy> 
      </physical> 

      <air> 
       <air>50.0</air> 
      </air> 
     </resistance> 

을, 나는의 데이터를 확인하는 루트로 설정하는 방법을 발견하지 않았습니다

는 XML의 형식을.

<Item> 
     <id>0</id> 
     <name>Helmet</name> 
     <resistance> 
      <physical> 
       <phy>60.0</phy> 
      </physical> 

      <air> 
       <air>50.5</air> 
      </air> 
     </resistance> 
    </Item> 

[XmlArray ("저항") XmlArrayItem ("실제")가] 부분만을 읽고 다음과 같이 파일이다. 다음과 같이 나 또한 서면으로 모든 것을 시도했다 :

[XmlArray("resistance"), XmlArrayItem("physical"), XmlArrayItem("phy")] 
public float[] phyres; 
[XmlArray("air"), XmlArrayItem("air")] 
public float[] airres; 

그러나 데이터를 읽고 저항이 새가 된 것처럼 나는, 후 읽을 된 다음에 무엇을 올바른 저항을했습니다 있지만 XML 파일은 다음, 지저분한있어 XML 파일의 절대 루트. 미리 감사드립니다.

편집 : 즉, 내 자식에 서브 루트가 있고 거기에 몇 가지 배열을 보유하고 싶습니다.

편집 : 편집 : 당신이 jdweng 감사합니다,이 작성하는 것이 더 간단 결국 :

[XmlElement("resistance"), XmlArrayItem("physical")] 
public float[] phyres; 
[XmlElement("air")] 
public float[] airres; 

하지만 여전히 같은 문제를 얻을. 루트/네임 스페이스는로 설정되고 이후에는 모든 네임 스페이스에서 읽습니다. 후에도 영향을 미치지 않습니다.

+0

변경 XmlArray : 여기

은 XML을 반영 클래스 구조입니다. XmlElement는 배열에서 작동하고 불필요한 태그를 한 수준 제거합니다. – jdweng

+0

@jdweng 코드의 마지막 스 니펫과 같은 결과를 얻은 것처럼 보입니다. 해당 요소와 그 이후의 모든 요소에 대한 루트 변경은 에서 검색됩니다. 저항 요소에서 데이터를 읽은 후 루트를 다시 으로 복원하는 방법은 무엇입니까? – lightingft

+0

XML을 사용하거나 클래스를 사용하여 항목에 저항을 추가해야합니다. – jdweng

답변

0

독자가 요구하는대로 resistance 요소에는 physicalair 요소가 포함되어 있습니다. 이것 :

[XmlElement("resistance"), XmlArrayItem("physical")] 
public float[] phyres; 
[XmlElement("air")] 
public float[] airers; 

그 것을 나타내지는 않습니다. 복수 physical 요소를 포함하는 resistance 요소를 의미합니다. 다음에air 요소가옵니다. XMLELEMENT에

public class Item 
{ 
    [XmlElement("id")] 
    public int Id { get; set; } 

    [XmlElement("name")] 
    public string Name { get; set; } 

    [XmlElement("resistance")] 
    public Resistance Resistance { get; set; } 
} 

public class Resistance 
{ 
    [XmlArray("physical")] 
    [XmlArrayItem("phy")] 
    public float[] Phyres { get; set; } 

    [XmlArray("air")] 
    [XmlArrayItem("air")] 
    public float[] Air { get; set; } 
} 
+0

아, 네,이 방법에 대해 생각해 보았지만 시도하는 것을 주저했습니다. tho 나는 더 이상 이것을 요구하지 않는다, 이것은 앞으로는 아주 유용 할 것이다. 고맙습니다! – lightingft