2016-06-19 3 views
0

요약하면 이전에 읽은 .xnb XML 파일에 데이터를 쓸 수 있습니까?C# XNA의 컴파일 된 XNB 파일에 XML을 저장하려면 어떻게해야합니까?


I했습니다 다음 내 프로젝트의 내용 폴더에

편집 가능한 XML 파일 :

<?xml version="1.0" encoding="utf-8" ?> 
<XnaContent> 
    <Asset Type="TestProgram_Data.Data"> 
    <Number>123</Number> 
    </Asset> 
</XnaContent> 

내 데이터 클래스 :

namespace TestProgram_Data 
{ 
    public class Data 
    { 
     public int Number; 
    } 
} 

Data data = new Data(); 
Console.WriteLine("Number: " + data.Number); // Output: "Number: 123" 

을하지만이 파일 (콘텐츠 폴더 아래에 .xnb 파일)을 쓸 수있는 방법 : 0 지금은이 같은 컴파일 된 XML 파일 (.xnb, XNA 콘텐츠 파일)에서 데이터를로드 할 수 있습니까?

data.Number = 123456789; // Doesn't work 

나는 IntermediateSerializer와 XmlWriter를 사용하려고하지만, 보통의 XML 파일을 만들어졌다. 이 .xnb 파일도 만들 수 있지만이 경우에는 .xnb 파일이 컴파일되지 않습니다 (메모장으로 편집 할 수 있고 프로젝트의 일부가 아니며 프로그램을 다시 실행하면 기본 데이터 [예 : 123]은 다시로드됩니다. 왜냐하면 XmlWriter로 만든 다른 파일이 아니라 내 .xnb 파일에서 읽었 기 때문입니다.

과거에는 읽었던 데이터를 .xnb 파일로 다시 저장할 수 있습니까?

+0

이들은 실제로 파이프 라인에서 XML에 대한 읽기 전용 액세스를 빠르게하기위한 것입니다. 수준의 설계 사양. 런타임에 변경하지 마십시오. 이런 식으로하고 싶다면 C#에서 표준 Xml 직렬화/직렬화 해제 클래스를 사용하십시오. – ManoDestra

답변

1

불가능합니다. XNB는 읽기 전용 형식으로 컨텐츠의 빠른 런타임 로딩을 위해 설계되었습니다. 빌드시에만 내용 파이프 라인에 의해 작성됩니다. 수정 된 데이터를 다른 형식으로 새 파일에 작성해야합니다.

또한 IntermediateSerializer은 콘텐츠 파이프 라인의 일부로 XNA 개발 도구에만 포함됩니다. 최종 사용자 재배포 가능 파일에는 포함되지 않습니다. 따라서 새 파일을 만드는 데이 파일을 사용해서는 안되며 일부 다른 serializer를 사용해야합니다.

관련 문제