2010-07-28 3 views
2

Winform Series 1Winform Series 2을 사용하여 내 winform에 내용을 성공적으로 작성할 수 있었지만 다음 질문을 할 때 편집기에 내용을 다시로드하는 방법은 무엇입니까? 콘텐츠, .xnb 파일이 현재 임시 폴더에 저장 중입니다. 어쨌든 각 파일을 다시 빌드하지 않고도 컨텐츠를 편집기로 다시로드 할 수 있습니까?Winform XNA에서 건물 내용

bin/폴더 내의 Content 폴더에 저장 한 다음 시작시 해당 폴더를 살펴보고 .xnb 파일을 찾아로드하면됩니까? 또는 이것에 쉬운 방법 있는가?

답변

1

두 번째 WinForms 샘플에는 응용 프로그램이 빌드 된 내용을 임시 디렉터리에 저장하는 방법을 설명하고 프로그램이 닫힐 때이를 삭제하는 HTML readme 파일이 있습니다.

이 중요한 비트입니다 :

응용 프로그램에 따라, 당신은 항상 같은 임시 디렉토리 이름을 사용하는 것을 선호하고, 삭제하지 않을 수도 있습니다. 이렇게하면 파일이 하드 드라이브에 남아있게됩니다. 콘텐츠 빌드 프로세스는 점진적입니다. 프로그램이 이전 실행 중에 이미 빌드 된 것과 동일한 컨텐츠 파일을로드하려고 시도하면 실제 처리 작업을 수행 할 필요가 없습니다. 이렇게하면 시작할 때마다 동일한 파일을로드하려는 레벨 편집기와 같은 프로그램의 로딩 시간이 단축 될 수 있습니다.

임시 디렉토리 삭제는 "Dispose"이라는 ContentBuilder.DeleteTempDirectory으로 처리됩니다. 따라서 DeleteTempDirectory으로 전화하여 제거하십시오.

readme 파일은 임시 디렉토리가 선택되는 방법 (및 그 이유)을 자세히 설명합니다. 애플리케이션에 맞게 CreateTempDirectory을 수정할 수 있습니다. 예를 들어, 편집자가 "레벨"파일을 가지고있는 경우, 빌드 된 컨텐츠 (.xnb 파일)를 레벨 옆에 같은 이름의 하위 디렉토리에 저장하여 게임에서 쉽게 빌드 된 컨텐츠를 열 수있게 할 수 있습니다.


파일이 세션간에 유지되면 모든 작업을 다시로드해야합니다. 두 가지 분명한 방법은 열려있는 파일 목록을 저장하고 다음 세션에서 다시로드하는 것입니다. 아니면 출력 디렉토리에 간단하게 열려있는 모든 : 그 문에 대한

string folder = @"C:\TemporaryXNAFilesOrWhatever"; 
List<Texture2D> textures = new List<Texture2D>(); 
ContentManager content = new ContentManager(serviceProvider, folder); 
string[] files = Directory.GetFiles(folder, "*.xnb"); 
foreach(string file in files) 
{ 
    string assetName = Path.GetFileNameWithoutExtension(file); 
    textures.Add(content.Load<Texture2D>(assetName)); 
} 
+0

감사 : 여기

는 (하위 디렉토리 없다고 가정) 후자를 수행하는 일부 거친 코드입니다. 이것은 내 문제를 해결하지 못하더라도 도움이됩니다. 나는 이미 지워지지 않은 상태에서 에디터로 다시로드되도록 만들어진 파일을 가질 수 있는지 궁금해했다. 그렇지 않으면 폴더를 살펴보고 그런 식으로로드 할 수 있을까? –

+0

@Chris : 그 방법을 설명하기 위해 제 대답을 업데이트했습니다. –