[TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
+3
Weslley
RenanMSV
rafaelllsd
7 participantes
Página 1 de 1
[TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
Olá, hoje vim trazer um sistema simples para mostrar como se pode baixar e colocar texturas nos objetos em tempo de execução facilmente usando o WWW do Unity.
O objetivo foi criar um sistema onde o usuario digita uma url de uma imagem e o jogo aplica esta imagem no objeto. O usuario terá a opção de escolher se quer salvar a foto em seu computador e o formato em que ela será salva!
Também podemos escolher se o usuario terá a pasta aberta automaticamente e/ou a foto também.
Primeiro vamos precisar de 1 botao UI, 1 input field UI, 1 text UI, 1 toogle UI e 1 dropdown UI.
Depois coloque o script abaixo em um objeto qualquer. E ligue no inspector corretamente.
Agora no botao clique na propriedade OnClick, arraste o objeto que possui o script pra lá e selecione em baixo TextureUrlController > GetURLTexture ()
Resultado :
====================
Mesmo script na antiga GUI:
O objetivo foi criar um sistema onde o usuario digita uma url de uma imagem e o jogo aplica esta imagem no objeto. O usuario terá a opção de escolher se quer salvar a foto em seu computador e o formato em que ela será salva!
Também podemos escolher se o usuario terá a pasta aberta automaticamente e/ou a foto também.
Primeiro vamos precisar de 1 botao UI, 1 input field UI, 1 text UI, 1 toogle UI e 1 dropdown UI.
Depois coloque o script abaixo em um objeto qualquer. E ligue no inspector corretamente.
Agora no botao clique na propriedade OnClick, arraste o objeto que possui o script pra lá e selecione em baixo TextureUrlController > GetURLTexture ()
- Código:
using UnityEngine;
using System.Collections;
using System.IO;
using System;
using UnityEngine.UI;
public class TextureUrlControler : MonoBehaviour {
public InputField Field;
public Text Log;
public Toggle Save;
public Dropdown format;
public GameObject target;
public bool OpenDirectory, OpenFile;
private bool OpenFPanel;
public string DirectoryName = "imported-sc";
private DateTime d = DateTime.Now;
private byte[] bytes;
private string dir,file;
IEnumerator ApplyTexture() {
WWW www = new WWW(Field.text);
Log.text = "Please Wait...Downloading";
yield return www;
Log.text = null;
Renderer renderer = target.GetComponent<Renderer>();
renderer.material.mainTexture = www.texture;
if (Save.isOn) {
Texture2D texture = www.texture;
if (format.value == 0) bytes = texture.EncodeToPNG (); else bytes = texture.EncodeToJPG ();
Destroy (texture);
if (OpenFPanel){
} else{
dir = Application.dataPath + "/../" + DirectoryName + "/" + string.Format("{0}-{1}-{2}_{3}-{4}-{5}", d.Day.ToString(), d.Month.ToString(), d.Year.ToString(), d.Hour.ToString(), d.Minute.ToString(), d.Second.ToString()) + (format.value == 0 ? ".png" : ".jpg");
if (!Directory.Exists(Application.dataPath + "/../" + DirectoryName + "/"))
Directory.CreateDirectory(Application.dataPath + "/../" + DirectoryName + "/");
File.WriteAllBytes(dir, bytes);
if (OpenDirectory) System.Diagnostics.Process.Start(Application.dataPath + "/../" + DirectoryName + "/");
if (OpenFile) System.Diagnostics.Process.Start(dir);
}
dir = null;
file = null;
}
if (!string.IsNullOrEmpty(www.error)) Debug.Log(www.error);
}
public void GetURLTexture(){
StartCoroutine (ApplyTexture ());
}
}
Resultado :
====================
Mesmo script na antiga GUI:
- Código:
using UnityEngine;
using System.Collections;
using System.IO;
using System;
using UnityEngine.UI;
public class TextureUrlControlerGUI : MonoBehaviour {
public int indexF;
private string[] Formats = new string[] { "PNG","JPG"};
private string Log;
public GameObject target;
public bool OpenDirectory, OpenFile, Save;
private bool OpenFPanel;
public string url,DirectoryName = "imported-sc";
private DateTime d = DateTime.Now;
private byte[] bytes;
private string dir, file;
IEnumerator ApplyTexture() {
WWW www = new WWW(url);
Log = "Please Wait...Downloading";
yield return www;
Log = null;
Renderer renderer = target.GetComponent<Renderer>();
renderer.material.mainTexture = www.texture;
if (Save) {
Texture2D texture = www.texture;
if (indexF == 0) bytes = texture.EncodeToPNG (); else bytes = texture.EncodeToJPG ();
Destroy (texture);
if (OpenFPanel)
{
}
else
{
dir = Application.dataPath + "/../" + DirectoryName + "/" + string.Format("{0}-{1}-{2}_{3}-{4}-{5}", d.Day.ToString(), d.Month.ToString(), d.Year.ToString(), d.Hour.ToString(), d.Minute.ToString(), d.Second.ToString()) + (indexF == 0 ? ".png" : ".jpg");
if (!Directory.Exists(Application.dataPath + "/../" + DirectoryName + "/"))
Directory.CreateDirectory(Application.dataPath + "/../" + DirectoryName + "/");
File.WriteAllBytes(dir, bytes);
if (OpenDirectory) System.Diagnostics.Process.Start(Application.dataPath + "/../" + DirectoryName + "/");
if (OpenFile) System.Diagnostics.Process.Start(dir);
}
dir = null;
file = null;
}
if (!string.IsNullOrEmpty(www.error)) Debug.Log(www.error);
}
public void GetURLTexture(){
StartCoroutine (ApplyTexture ());
}
void OnGUI ()
{
url = GUI.TextField(new Rect(10, 10, 200, 20), url,255);
indexF = GUI.SelectionGrid(new Rect(10, 60, 100, 20), indexF, Formats, 2);
GUI.Label(new Rect(200, 35, 500, 20), Log);
Save = GUI.Toggle(new Rect(10, 35, 500, 30), Save, " Save image as:");
if (GUI.Button(new Rect(10, 90, 50, 30), "Apply"))
GetURLTexture();
}
}
Última edição por RenanMSV em Ter Jun 07, 2016 2:09 pm, editado 9 vez(es)
RenanMSV- Instrutor
- PONTOS : 4485
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
Que daora, nunca passo pela minha cabeça que dava para fazer isso muito legal, agora uma duvida quando sai do play da unity a textura fica no objeto ou sai? e onde as texturas ficam quando baixadas?
rafaelllsd- ProgramadorMaster
- PONTOS : 5243
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: [TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
Agora o usuario pode escolher salvar ou não a imagem, e em que formato ele quer (JPG, PNG).
As imagens sao salvas na pasta "import-sc" que fica na pasta raiz de onde o usuario instalou seu jogo.
O nome da foto será DIA-MES-ANO_HORA-MINUTO-SEGUNDOS .PNG ou .JPG
voce pode mudar o nome da pasta ali no script se quiser.
As imagens sao salvas na pasta "import-sc" que fica na pasta raiz de onde o usuario instalou seu jogo.
O nome da foto será DIA-MES-ANO_HORA-MINUTO-SEGUNDOS .PNG ou .JPG
voce pode mudar o nome da pasta ali no script se quiser.
RenanMSV- Instrutor
- PONTOS : 4485
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
Quero saber se pode fazer para a unity 4 com a Ongui.Se possivel.Agradeço se de ou nao. Tenho um parecido com esse mas quero colocar na Gui.butom e no personagem tambem.E salvar no script.
Chilinger- MembroAvançado
- PONTOS : 4093
REPUTAÇÃO : 42
Idade : 30
Respeito as regras :
Re: [TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
Tem como usar OnGui sim, só mudar algumas coisas
RenanMSV- Instrutor
- PONTOS : 4485
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Weslley- Moderador
- PONTOS : 5728
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: [TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
Depois vou criar uma DLL ou um simples namespace... algo assim, pra simplesmente vc digitar gameObject.material = GetURLTexture(url); e tudo ser feito automaticamente
RenanMSV- Instrutor
- PONTOS : 4485
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
Realmente seria interessante
Weslley- Moderador
- PONTOS : 5728
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: [TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
pode fazer e me passar se bobear pelo MP
Chilinger- MembroAvançado
- PONTOS : 4093
REPUTAÇÃO : 42
Idade : 30
Respeito as regras :
Re: [TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
Agora com as bools OpenDirectory e OpenFile vc pode fazer o seu jogo abrir a pasta em que a foto foi salva e/ou abrir a imagem salva automaticamente.
E voce tbm poderá definir o nome da pasta que irá guardar as imagens baixadas.
Adicionado script para a GUI antiga.
E voce tbm poderá definir o nome da pasta que irá guardar as imagens baixadas.
Adicionado script para a GUI antiga.
RenanMSV- Instrutor
- PONTOS : 4485
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
porque vc não Implementa o OpenFilePanel pro usuário escolher onde vai ser salva a imagem ?
Weslley- Moderador
- PONTOS : 5728
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: [TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
Infelizmente o Open File Panel só funciona dentro do Editor da Unity.
RenanMSV- Instrutor
- PONTOS : 4485
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
Ja vi a um tempo atras um asset onde se fazia pintura da msm maneira mas fica salvo como nova textura maneiro.
Chilinger- MembroAvançado
- PONTOS : 4093
REPUTAÇÃO : 42
Idade : 30
Respeito as regras :
Re: [TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
Renan como seria para ao invés de uma url eu buscar imagens armazenadas no celular ? Tipo as nossa imagens no perfil de usuário, eu teria uma "Image" ou "Material" em braco ao clicar em um botão abrir o local de minha imagens armazenadas no celular ao escolher a imagem ficaria como "Texture" do meu material. É possível ?
kalielson- ProgramadorMaster
- PONTOS : 3574
REPUTAÇÃO : 120
Idade : 40
Áreas de atuação : Mestrando em Computação
Respeito as regras :
Re: [TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
Como faço pra quando importa a imagem fica como skin do carro ou ônibus????
Kelvyn_Feitosa- Avançado
- PONTOS : 3518
REPUTAÇÃO : 3
Respeito as regras :
Re: [TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
Basta pegar o shader do seu modelo 3D, pegar o componente "material", e fazer um SetTexture nele.
Mas isto depende de qual shader você está utilizando nestes objetos. Saberia informar qual é?
Mas isto depende de qual shader você está utilizando nestes objetos. Saberia informar qual é?
Re: [TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
MarcosSchultz escreveu:Basta pegar o shader do seu modelo 3D, pegar o componente "material", e fazer um SetTexture nele.
Mas isto depende de qual shader você está utilizando nestes objetos. Saberia informar qual é?
Vixe, Sei não axo que nem tem shader! Ajuda ae como faço? passo a passo PFV
Kelvyn_Feitosa- Avançado
- PONTOS : 3518
REPUTAÇÃO : 3
Respeito as regras :
Re: [TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
Claro que tem, shader é o que tem no material do objeto. é aonde vai a textura,
Re: [TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
MarcosSchultz escreveu:Claro que tem, shader é o que tem no material do objeto. é aonde vai a textura,
O shade que tou usando é o unlit/texture. Como faço pra set o material igual você falou???
Kelvyn_Feitosa- Avançado
- PONTOS : 3518
REPUTAÇÃO : 3
Respeito as regras :
Re: [TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
Um exemplo simples:
- Código:
public Texture textura;
void Start(){
GetComponent<MeshRenderer> ().material.mainTexture = textura;
}
Re: [TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
Como posso importa para dentro do jogo um objeto.Quero que eu possa add em uma class onde irei puxar imagem e nome e quando o jogador for usar apareça no jogo.Isso com o jogo online.
Chilinger- MembroAvançado
- PONTOS : 4093
REPUTAÇÃO : 42
Idade : 30
Respeito as regras :
Re: [TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
Chilinger escreveu:Como posso importa para dentro do jogo um objeto.Quero que eu possa add em uma class onde irei puxar imagem e nome e quando o jogador for usar apareça no jogo.Isso com o jogo online.
Objeto? está falando de modelo 3D?
Re: [TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
Sim
pegar e colocar na tela para poder adicionar a essa class.
pegar e colocar na tela para poder adicionar a essa class.
Chilinger- MembroAvançado
- PONTOS : 4093
REPUTAÇÃO : 42
Idade : 30
Respeito as regras :
Re: [TUTORIAL] Baixar e aplicar texturas em tempo de execução! Agora salva a imagem no pc do usuario!
Ai é complicado... você vai precisar elaborar um plugin ou algo do tipo. A Unity trabalha bem com 2 tipos de modelos específicos, sendo eles .fbx e .obj, mas não há uma maneira muito simples de importar objetos depois que o jogo está compilado.
Tópicos semelhantes
» [TUTORIAL] Imagem aparecer na tela por um tempo (sustos, notas, etc)
» Problemas com iluminação em tempo de execução
» Importar .unitypackage em tempo de execução
» Só baixar a imagem se ela ainda não existir
» [RESOLVIDO] Como aplicar efeito Fadeout em Imagem
» Problemas com iluminação em tempo de execução
» Importar .unitypackage em tempo de execução
» Só baixar a imagem se ela ainda não existir
» [RESOLVIDO] Como aplicar efeito Fadeout em Imagem
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos