정말 업데이트 방법으로로드하지 않는 것이 좋습니다. 좋은 방법은 아닙니다. 부작용으로 인해 프레임 속도 저하 (지연) 및 기타 원하지 않는 동작이 발생할 수 있습니다. 그래서 내 조언은 LoadContent 방법을로드하는 것입니다 :
이
protected override void LoadContent() {
spriteBatch = new SpriteBatch(GraphicsDevice);
//...
level2ButtonUnlocked = Content.Load<Texture2D>("GUI\\level2");
}
그리고 다음 업데이트 방법에 할당 :
protected override void Update(GameTime gameTime) {
if (level2.Unlocked == true){
level2Button = level2ButtonUnlocked;
}
}
그래서이는 방법 중 하나입니다. 나는
Dictionary<string, Texture2D>
또는
레벨이
텍스처 속성을 포함하는
List<Level>
처럼 깨끗하고 똑똑 하나를 사용하십시오하고
는 필드를 IsLocked 모든 인덱스는 같은 수준의 수를 나타냅니다
class Level {
public Texture2D Texture {
get {
if(IsLocked)
return lockedTexture;
return unlockedTexture;
}
}
public bool IsLocked = true;
private Texture2D lockedTexture, unlockedTexture;
public LoadContent(ContentManager content, string lockedPath, string unlockedPath){
lockedTexture = content.Load<Texture2D>(lockedPath);
unlockedTexture = content.Load<Texture2D>(unlockedPath);
}
}
버튼 클래스가 있습니까? 어떤 텍스처가 사용되어야 하는지를 나타내는 속성을 가지고 있습니까? level2Button이란 무엇입니까? – user3256944
아래의 Feux의 훌륭한 답변에 따라 데이터가 CPU에서 GPU로 전송되어야하기 때문에 그리기 루프 중에 새 텍스처를 만들거나 업데이트하는 것이 '느린'것입니다. CPU-GPU 메모리 버스는 이미 GPU에 업로드/생성 된 데이터에 액세스하는 것과 비교할 때 매우 느립니다. Offtopic하지만 게임 루프 중에 텍스처를 업데이트해도 괜찮은지 생각할 수있는 유일한 시간은 렌더링 타겟을 사용하는 것입니다.하지만 다시 GPU에서 모든 일이 발생합니다. – MickyD