Erro ao informar tamanho do componente Image ao criar Texture2D
2 participantes
Página 1 de 1
Erro ao informar tamanho do componente Image ao criar Texture2D
Estou buscando imagens dinamicamente independente se é no PC ou no Android então eu não estou mais buscando as imagens da pasta Resouces. Primeiramente passo o caminho que as imagens estão, depois no meu caso tenho 3 níveis de dificuldade e de acordo com o nível as imagens são separadas em listas(guardando o diretório de cada uma). Como estou utilizando uma Sprite para retornar a imagem, acabei encontrando esse método num fórum. Ele pega a imagem do diretório que passei e cria um array de bytes, depois transforma esse array em textura e no final posso criar uma sprite com essa textura. Super confuso, mas devido ao tempo acabei deixando assim...
Abaixo o método que peguei na net e fiz pequenas alterações para que funcionasse da maneira que eu precisava.
public void retornaImagensNivel(List nivel){
arraySprite = new Sprite[nivel.Count];
for (int i = 0; i < nivel.Count; i++) {
byte[] data = File.ReadAllBytes (nivel.ElementAt(i));
Texture2D texture = new Texture2D (270, 186, TextureFormat.ARGB32, false);
texture.LoadImage (data);
texture.name = Path.GetFileNameWithoutExtension (nivel.ElementAt(i));
Sprite spt = Sprite.Create (texture, new Rect (0f, 0f, 270.0f, 186.0f), new Vector2 (0f, 0f), 128);
arraySprite[i] = spt;
}
}
Minha dúvida é que no método estou passando fixo os valores 270 e 186, isso obriga que minha imagem no Android tenha essas dimensões. Se eu quiser que ela seja adaptada de acordo com meu componente Image, como eu poderia fazer?
Obs: Tentei passar as dimensões do meu componente Image, porém ao executar retorna o seguinte erro:
ArgumentException: Could not create sprite (0.000000, 0.000000, 606.000000, 186.000000) from a 270x186 texture.
UnityEngine.Sprite.Create (UnityEngine.Texture2D texture, Rect rect, Vector2 pivot, Single pixelsPerUnit) (at C:/buildslave/unity/build/artifacts/generated/common/runtime/SpritesBindings.gen.cs:69)
SelecionaSprites.retornaImagensNivel (System.Collections.Generic.List`1 nivel) (at Assets/Scripts/ScriptsGerais/SelecionaSprites.cs:142)
SelecionaSprites.Start () (at Assets/Scripts/ScriptsGerais/SelecionaSprites.cs:78)
Abaixo o método que peguei na net e fiz pequenas alterações para que funcionasse da maneira que eu precisava.
public void retornaImagensNivel(List nivel){
arraySprite = new Sprite[nivel.Count];
for (int i = 0; i < nivel.Count; i++) {
byte[] data = File.ReadAllBytes (nivel.ElementAt(i));
Texture2D texture = new Texture2D (270, 186, TextureFormat.ARGB32, false);
texture.LoadImage (data);
texture.name = Path.GetFileNameWithoutExtension (nivel.ElementAt(i));
Sprite spt = Sprite.Create (texture, new Rect (0f, 0f, 270.0f, 186.0f), new Vector2 (0f, 0f), 128);
arraySprite[i] = spt;
}
}
Minha dúvida é que no método estou passando fixo os valores 270 e 186, isso obriga que minha imagem no Android tenha essas dimensões. Se eu quiser que ela seja adaptada de acordo com meu componente Image, como eu poderia fazer?
Obs: Tentei passar as dimensões do meu componente Image, porém ao executar retorna o seguinte erro:
ArgumentException: Could not create sprite (0.000000, 0.000000, 606.000000, 186.000000) from a 270x186 texture.
UnityEngine.Sprite.Create (UnityEngine.Texture2D texture, Rect rect, Vector2 pivot, Single pixelsPerUnit) (at C:/buildslave/unity/build/artifacts/generated/common/runtime/SpritesBindings.gen.cs:69)
SelecionaSprites.retornaImagensNivel (System.Collections.Generic.List`1 nivel) (at Assets/Scripts/ScriptsGerais/SelecionaSprites.cs:142)
SelecionaSprites.Start () (at Assets/Scripts/ScriptsGerais/SelecionaSprites.cs:78)
vivianPanzenhagen- Iniciante
- PONTOS : 3174
REPUTAÇÃO : 0
Idade : 31
Respeito as regras :
Re: Erro ao informar tamanho do componente Image ao criar Texture2D
como o UI Imagem não se ajusta automaticamente como padrão então faça a textura receber o tamanho padrão dela
se a Texture2D for muito grande era poderá fica achatada como padrão
se ela tiver o tamanho em x e y igual fica ajustada corretamente se o width e o height do Componente UI Image forem iguais claro
- Código:
public Texture2D textura;
Sprite newSprite = Sprite.Create (textura,new Rect(0,0,textura.width, textura.height),Vector2.zero);
image.sprite = newSprite;
se a Texture2D for muito grande era poderá fica achatada como padrão
se ela tiver o tamanho em x e y igual fica ajustada corretamente se o width e o height do Componente UI Image forem iguais claro
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Erro ao informar tamanho do componente Image ao criar Texture2D
Funcionou! Muito obrigada!!! :D
vivianPanzenhagen- Iniciante
- PONTOS : 3174
REPUTAÇÃO : 0
Idade : 31
Respeito as regras :
Tópicos semelhantes
» Como desativar o componente IMAGE e ativar automaticamente depois de certo tempo
» Erro ao instalar o componente da Unity no Visual Studio
» (Dúvida) Erro criar sala com Photon.
» [TUTORIAL] Abrindo Image Do Pc Ou de Um Endereço Web Para uma Image UI (File Dialog)
» Erro a criar um projeto HDRP
» Erro ao instalar o componente da Unity no Visual Studio
» (Dúvida) Erro criar sala com Photon.
» [TUTORIAL] Abrindo Image Do Pc Ou de Um Endereço Web Para uma Image UI (File Dialog)
» Erro a criar um projeto HDRP
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos