TextFX (Projeto Inicial)
Página 1 de 1
TextFX (Projeto Inicial)
Olá, hoje estava meio pra baixo, sem nada pra fazer resolvi criar um efeito de texto. Ai pensei e resolvi criar 2. Na verdade adicionar o de piscar que eu ja tinha criado e postado aqui no fórum.
Sem mais delongas apresento o TextFx v0.1. Ainda está simples e pequeno, afinal só tem 2 efeitos (escrita e piscar).
Clique aqui para baixar o projeto em formato .unitypackage
Como usar:
Coloque este script em qualquer GameObject. Jogar em um Text UI tambem funciona. Apenas configure e já está pronto para usar a qualquer momento!
Aos que quiserem ajudar incrementando novos efeitos de texto eu digo que sim! Na verdade seria otimo! Então quem quiser pode editar adicionando novos efeitos ou otimizando o codigo atual de alguma forma e mandar o novo source aqui nos comentarios. !!
Ps: Ja coloque seu nome na primeira linha do script. Assim:
// v 0.1 TextFx || RenanMsV || Nome de outros que ajudaram || Seu Nome <----
Sem mais delongas apresento o TextFx v0.1. Ainda está simples e pequeno, afinal só tem 2 efeitos (escrita e piscar).
Clique aqui para baixar o projeto em formato .unitypackage
Como usar:
Coloque este script em qualquer GameObject. Jogar em um Text UI tambem funciona. Apenas configure e já está pronto para usar a qualquer momento!
- Detalhes:
- Código:
// LEIA-ME
/* Fx_Escrita:
A chamada desse método em grupos deve ser sempre feita dentro de um IEnumerator.
Se você NAO chamar dentro de um IEnumerator os textos irão se fundir na tela.
Uma chamada simples sozinha pode ser feita a qualquer momento.
Deve se colocar um while após cada chamada numa chamada em grupo (detalhes abaixo)
Somente a string é obrigatória na chamada. Os outros são opcionais, assumindo valores padrão se não forem especificados.
* Parametros do método Fx_Escrita:
* VARIAVELQUEGUARDAOSCRIPT.Fx_Escrita(String texto pra aparecer,
* Float Delay Para apagar o texto (opcional),
* Float Delay entre letras (opcional)
* ATENÇÃO: Deve se colocar está linha: while (VARIAVELQUEGUARDAOSCRIPT.escrevendo) yield return new WaitForSeconds(0); após cada chamada.
Exemplo:
fx.Fx_Escrita("Oi, eu sou um texto",1,.4f);
while (fx.escrevendo) yield return new WaitForSeconds(0);
*/
/* Fx_Piscar e Fx_CancelPiscar
* Parametros do método Fx_Piscar:
* VARIAVELQUEGUARDAOSCRIPT.Fx_Piscar(String texto para aparecer,
* Float tempo para piscar
Exemplo:
fx.Fx_Piscar("APERTE ENTER PARA INICIAR",.5f);
* Parametros do método Fx_CancelPiscar:
* VARIAVELQUEGUARDAOSCRIPT.Fx_CancelPiscar();
* Este método não tem parametros.
Exemplo:
fx.Fx_CancelPiscar();
*/
//======================================================================================================\\
- Script de Exemplo de Uso:
- Código:
using UnityEngine;
using System.Collections;
public class ExemploDeChamada : MonoBehaviour {
public TextFx TextFX; // Declare a classe TextFx e coloque-a no inspector corretamente.
void Start () {
}
void Update () {
if (Input.GetKeyDown("k") && !TextFX.escrevendo){// Inicie o dialogo com o efeito de escrita. Somente se ele já não estiver escrevendo ele comecará a escrever
StartCoroutine("Dialog"); // chamando o dialogo
}
if (Input.GetKeyDown("l")) { // inicie o efeito de piscar
TextFX.Fx_Piscar("APERTE ENTER PARA INICIAR",.5f); // chamando
}
if (Input.GetKeyDown("m")) { // pare o efeito de piscar
TextFX.Fx_CancelPiscar(); // chamando
}
}
private IEnumerator Dialog(){
TextFX.Fx_Escrita("- E agora, o que fazer?",1); // primeira frase
while (TextFX.escrevendo) yield return new WaitForSeconds(0); // LINHA OBRIGATÓRIA. DEVE SE COLOCAR ESTA LINHA!
TextFX.Fx_Escrita("- Não sei ainda, o jeito é esperar.",1); // Aqui chamei a função passando os parametros Texto, e Delay entre Frases.
while (TextFX.escrevendo) yield return new WaitForSeconds(0); // Linha obrigatória
TextFX.Fx_Escrita("- Mas esperar o que? Ele vai destruir tudo antes disso.",1,0.0001f); // Todos parametros
while (TextFX.escrevendo) yield return new WaitForSeconds(0); // Linha obrigatória
TextFX.Fx_Escrita("- Não podemos arriscar... Amanhã de manhã nós iremos atacar.",1,0.0001f); // Todos parametros
while (TextFX.escrevendo) yield return new WaitForSeconds(0); // Linha obrigatória
TextFX.Fx_Escrita("- Hmpf.. Sim senhor.."); // Somente o parametro texto
while (TextFX.escrevendo) yield return new WaitForSeconds(0); // Linha obrigatória
TextFX.Fx_Escrita("FIM DO TESTE",10); // Texto e Delay entre Frases.
yield return null; // Final do IEnumerator Dialog.
}
}
- Source:
- Código:
// v 0.1 TextFx || RenanMsV
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
[RequireComponent(typeof(Canvas))]
[RequireComponent(typeof(CanvasRenderer))]
[RequireComponent(typeof(Text))]
[RequireComponent(typeof(AudioSource))]
public class TextFx : MonoBehaviour {
[HideInInspector]
public bool escrevendo,piscar;
private GameObject obj;
[Header("Configurações de Texto")]
[Tooltip("GameObject UI Text em que o texto será renderizado")]
public UsarTxt RenderizarEm;
public enum UsarTxt {UsarEsteObjeto,UsarUmDeFora};
[Tooltip("Não é necessario preencher se você for usar este gameObject")]
public Text ObjetoAUsar;
[Header("Configurações [Será aplicado se 'Auto Configurar' estiver marcado")]
public bool AutoConfigurar;
public enum TxtPos{Cima_Centro,Cima_Esq,Cima_Dir,Centro_Centro,Centro_Esq,Centro_Dir,Baixo_Centro,Baixo_Esq,Baixo_Dir};
[Tooltip("Posição em relação a ancora do Rect Transform do Text UI. Não é em relação a tela!")]
public TxtPos PosiçãoDoTexto;
[Header("Configurações do efeito de Escrita")]
public bool UsarSom;
public AudioClip somDeDigitar;
void Start () {
switch (RenderizarEm){
case UsarTxt.UsarEsteObjeto: obj = gameObject;
break;
case UsarTxt.UsarUmDeFora: obj = ObjetoAUsar.gameObject;
break;
}
if (AutoConfigurar){
switch(PosiçãoDoTexto){
case TxtPos.Baixo_Centro: obj.GetComponent<Text>().alignment = TextAnchor.LowerCenter;
break;
case TxtPos.Baixo_Dir: obj.GetComponent<Text>().alignment = TextAnchor.LowerRight;
break;
case TxtPos.Baixo_Esq: obj.GetComponent<Text>().alignment = TextAnchor.LowerLeft;
break;
case TxtPos.Centro_Centro: obj.GetComponent<Text>().alignment = TextAnchor.MiddleCenter;
break;
case TxtPos.Centro_Dir: obj.GetComponent<Text>().alignment = TextAnchor.MiddleRight;
break;
case TxtPos.Centro_Esq: obj.GetComponent<Text>().alignment = TextAnchor.MiddleLeft;
break;
case TxtPos.Cima_Centro: obj.GetComponent<Text>().alignment = TextAnchor.UpperCenter;
break;
case TxtPos.Cima_Dir: obj.GetComponent<Text>().alignment = TextAnchor.UpperRight;
break;
case TxtPos.Cima_Esq: obj.GetComponent<Text>().alignment = TextAnchor.UpperLeft;
break;
}
}
}
void Update () {
}
private void ApagarTexto(){
obj.GetComponent<Text>().text = "";
}
// ==================== Efeito de Escrever ====================== \\
public void Fx_Escrita (string Texto, float delayApagarTexto = 1, float delayEntreLetras = 0.08f){
ApagarTexto();
StartCoroutine(Escrever(Texto,delayApagarTexto,delayEntreLetras));
}
private IEnumerator Escrever(string Texto, float delayApagarTexto, float delayEntreLetras){
escrevendo = true;
if (UsarSom) {
obj.GetComponent<AudioSource>().loop = true;
obj.GetComponent<AudioSource>().clip = somDeDigitar;
obj.GetComponent<AudioSource>().Play();
}
for (int i=0;i<Texto.Length;i++){
obj.GetComponent<Text>().text += Texto.Substring(i,1);
yield return new WaitForSeconds(delayEntreLetras);
}
yield return new WaitForSeconds(delayApagarTexto);
ApagarTexto();
escrevendo = false;
if (obj.GetComponent<AudioSource>().isPlaying) {
obj.GetComponent<AudioSource>().Stop();
obj.GetComponent<AudioSource>().loop = false;
obj.GetComponent<AudioSource>().clip = null;
}
}
//=============================================================== \\
// ==================== Efeito de piscar ====================== \\
public void Fx_Piscar (string Texto, float tempoPiscar){
if (UsarSom) obj.GetComponent<AudioSource>().PlayOneShot(somDeDigitar);
obj.GetComponent<Text>().text = Texto;
piscar = true;
StartCoroutine(Piscar(tempoPiscar));
}
private IEnumerator Piscar(float tempoPiscar){
obj.GetComponent<Text>().enabled = !obj.GetComponent<Text>().enabled;
yield return new WaitForSeconds(tempoPiscar);
if (piscar) StartCoroutine(Piscar(tempoPiscar));
}
public void Fx_CancelPiscar(){
piscar = false;
obj.GetComponent<Text>().enabled = true;
}
//=============================================================== \\
}
Aos que quiserem ajudar incrementando novos efeitos de texto eu digo que sim! Na verdade seria otimo! Então quem quiser pode editar adicionando novos efeitos ou otimizando o codigo atual de alguma forma e mandar o novo source aqui nos comentarios. !!
Ps: Ja coloque seu nome na primeira linha do script. Assim:
// v 0.1 TextFx || RenanMsV || Nome de outros que ajudaram || Seu Nome <----
RenanMSV- Instrutor
- PONTOS : 4486
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Tópicos semelhantes
» [TUTORIAL] Cutscene inicial!
» um erro inicial no unity
» Problema Com Menu Inicial !!
» Dúvida sobre Estado inicial
» Criação de Cutscene inicial do game
» um erro inicial no unity
» Problema Com Menu Inicial !!
» Dúvida sobre Estado inicial
» Criação de Cutscene inicial do game
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos