면책 조항 : 나는 어떤에 의해 오전 없습니다 콘텐츠 파이프 라인에 관한 짧은 요약을 제공하기 전에 XNA 컨텐츠 파이프 라인
에 대한 전문가를 의미하고 확장하는 방법, 내가 언급하고 싶습니다 XNA 이후 3.1, ContentTypeReader 및 ContentTypeWriter 구현은 더 이상 필요하지 않습니다.
XNA 3.1에서는 Reflection을 사용하여 자동 XNB serialization이 도입되었으므로 작성자와 판독기가 포함되어 있지 않으면 XNA가이를 처리합니다 (일부 사례 제외). 자세한 내용은 여기
읽기 : 당신이 시각 사용하는 경우
이들의 대부분은 설계 시간 (발생 : Automatic XNB Serialization
XNA 컨텐츠 파이프 라인은 다음과 같은 단계로 제조 된 과정이다 게임에 아트 애셋을 추가하거나 게임을 제작할 때 사용하는 Studio). 마지막 부분은 게임을 실행하고 Content.Load를 호출하여 자산을로드 할 때 런타임에 실행됩니다.
확장을 위해 열려있는 XNA 콘텐츠 파이프 라인을 사용하면 XNA Framework와 함께 제공되는 기본 제공 콘텐츠 형식 이외의 형식을 지원할 수 있으므로 새 콘텐츠 형식 및 새 파일 형식을 다음과 같이 처리 할 수 있습니다. 귀하의 게임에 대한 입력. 다음 그림에서
, 당신은 콘텐츠 파이프 라인을 확장 할 때 실행되는 이벤트의 사슬을 볼 수
귀하의 예제에서 (지도 새로운 유형을 지원하는 확장을 만들려면), 다음 작업을 수행해야합니다 (일부는 이미 가정) :
- VS에서 새 내용 파이프 라인 확장 라이브러리 프로젝트를 만듭니다.
- 이 프로젝트를 게임 콘텐츠 프로젝트에 대한 참조로 추가하십시오.
- 새로운 ContentImporter 추가 ContentProcessor [선택] ContentTypeWriter 및 ContentTypeReader는
이 방법을 구현해야합니다 귀하의 ContentTypeWriter 클래스 :
는 public override string GetRuntimeReader(TargetPlatform targetPlatform)
{
// TODO: change this to the name of your ContentTypeReader
// class which will be used to load this data.
return "ContentPipelineExtension.CharacterReader, ContentPipelineExtension, Version=1.0.0.0, Culture=neutral";
}
이 예제에서, 나는 다른 CharacterReader을 사용했습니다하는 것으로 클래스의 경우 독자 유형을 등록하고 어셈블리를 포함하는 독자 유형을 등록해야합니다.나는 그것을위한 새로운 문자라는 유형, 수입, 프로세서와 리더/라이터와 데모 프로젝트를 생성 havev ContentTypeWriter.GetRuntimeReader
: 여기 GetRuntimeReader 방법에 대해 알아
.
당신은 그것을 여기에서 얻을 수 있습니다 : Sample project
* 디버그하기 위해 프로세서/수입이 줄을 추가하고 비주얼 스튜디오 실제로 콘텐츠 파이프 라인 확장 라이브러리의 코드를 트리거 것을 볼 수 있습니다.
System.Diagnostics.Debugger.Launch();
*주의해야 할 또 다른 한가지는 당신의 새로운 형태 (지도, 문자, 무엇이든) 자신의 공유 어셈블리에 정의되어야하며, 이러한 유형의 실제 게임과 모두 사용해야하기 때문에, 제대로 계획하여 콘텐츠 파이프 라인 확장 라이브러리.
희망이 도움이됩니다.
사용하려고하면이 예외가 throw됩니까? –
아니, 그냥 코드를 완전히 무시하는 것 같습니다. 어떻게 등록해야하나요? –
이지도 유형에 맞는 ContentTypeWriter가 있습니까? 이 유형에서는 런타임 판독기 클래스를 등록해야합니다. –