2014-11-07 8 views
0

2 개의 텍스처를 만들려고합니다. 하나는 이미지를 스프라이트로 사용했지만, 그것을 단색 검정 사각형으로 변경했습니다. 새 스프라이트의 색상을 설정하려고 시도하기 전까지는 오류가 발생하지 않았습니다. 그렇다면 "전달 된 데이터의 크기가이 리소스에 비해 너무 크거나 작습니다"라는 예외가 있습니다.데이터가 너무 크거나 작습니다. texture2d.SetData <Color>

 boostBar = new Texture2D(graphics.GraphicsDevice, 1,1, false, SurfaceFormat.Color); 
     boostBar.SetData<Color>(new Color[] { Color.Black }); 
     // TODO: use this.Content to load your game content here 

     spriteBatch = new SpriteBatch(GraphicsDevice); 
     myTexture = new Texture2D(graphics.GraphicsDevice, 40, 40, false, SurfaceFormat.Color); 
     myTexture.SetData<Color>(new Color[] {Color.Black}); 

답변

0

SetData<Color>의 파라미터는 각각의 요소는 단일 텍셀을 나타내는 색 배열이다. 단일 색 요소가있는 배열을 전달하고 있습니다. 그러나 생성 한 두 번째 텍스처는 40x40이므로 필요한 텍셀 데이터 양보다 1599 개 부족합니다.

따라서 데이터가 "너무 작다"는 예외가 발생합니다.

크기가 40x40 인 색상 배열을 만들고 각 요소를 Color.Black (또는 원하는대로)으로 설정하고 을 SetData에 전달합니다.

+0

제가 이해할 수 있다고 생각합니다.하지만 2 차원 어레이 40을 40 개 작성하여 payy하면 Microsoft.Xna.framework.Color [*, *]로 변환 할 수 없습니다. Color [] – user43043

+0

* 1D * 배열을 만듭니다. 2D 배열을 만들었습니다. 새로운 색상 [40, 40]이 아닌 새로운 색상 [40 * 40]을 원합니다. –

+0

Ok - 그렇다면 Color [] _colors = new Color [40 * 40]과 같은 새로운 배열을 만들어야합니까? – user43043