2012-09-10 4 views
0

XNA 프로젝트에서 데이터를 직렬화하려고합니다. 런타임에 사용하는 Texture2D 배경 속성이 있지만 배경 이름을 보유 할 '문자열 속성'도 있습니다. 이렇게하면 나중에 정보를 사용하여 나중에 비 직렬화하고 내 게임에로드 할 수 있도록 자산 이름을 일련화할 수 있습니다.XNA의 Texture2D에서 자산 이름 가져 오기

문제는 myTexture.Name 속성이 자산 이름을 보유하고 있다고 가정하지만 XML 파일로 serialize하려고하면 BackgroundName 요소가 비어 있습니다. 여기

이 같은 속성 코드는 모습입니다 :

//This property is Only used for serialization, myTexture is Texture2D and is assigned in the ctor of the class 
public string BGName { get { return this.myTexture.Name;} set{/*Empty on purpose*/} } 

누군가가, 알려 주시기 바랍니다 수있는 Texture2D에서 자산 이름을 검색하는 방법을 MSDN에 따르면,이 필드는 텍스처의 이름을 보유하고 있습니다.

답변

6

GraphicsResourceName 속성은 XNA Framework에서 실제로 사용되지 않습니다. 당신이 생각하는 것이 무엇이든지간에 그것을 채우는 것은 당신에게 달려 있습니다.

public static Texture2D LoadTexture2D(this ContentManager content, String asset) 
{ 
    var texture = content.Load<Texture2D>(asset); 
    texture.Name = asset; 
    return texture; 
} 

var texture = contentManager.LoadTexture2D("textures\\whatever"); 
Console.WriteLine(texture.Name); // should be "textures\\whatever" 
+0

OMG는, MSDN은 당신이 Texture2D의 Name 속성을 사용하는 방법에 말했다 정확히 말한 것입니다 만, 나는 행복 캠프를했을 것이다 이일 :이 충분히 쉽게 할 수있는 도우미 메서드를 작성할 수 전에. BTW, 당신이 제공 한 스 니펫 (snippet)과 같은 정적 메서드를 사용하여 Utit 클래스를 사용하여 Texture2D 및 SpriteFont를 만드는 것과 똑같은 일을하려고 생각했습니다. 나를 도우려는 선생님 께 큰 도움이 되셨습니다. – badboy11

+2

나는 이것이 불행한 감시라는 데 동의한다. 종종 그렇듯이, 나는 포럼 포스트에서 그렇게했던 정보를 제공하기 위해 Shawn Hargreaves에 의존했다. –