Não estou conseguindo ativar o evento do onClick após instanciar o botão
2 participantes
Página 1 de 1
Não estou conseguindo ativar o evento do onClick após instanciar o botão
Oi gente eu criei um Prefab de três botões que serão instanciados após o geme iniciar "Start()"
Após iniciar o jogo, tudo funciona normalmente menos o evento de click.
O botão funciona normalmente, pisca e tudo, só não ativa o evento.
Após iniciar o jogo, tudo funciona normalmente menos o evento de click.
O botão funciona normalmente, pisca e tudo, só não ativa o evento.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class scr_controller : MonoBehaviour
{
public GameObject obj_0;
public GameObject obj_1;
public GameObject obj_2;
public GameObject obj_3;
public Button btn_left;
public Button btn_right;
public GameObject btn_buy_obj;
public GameObject btn_equip_obj;
public GameObject btn_equiped_obj;
public int contador;
GameObject destroyBtn;
GameObject destroyObj;
Button btn_buy;
Button btn_equip;
Button btn_equiped;
string[] arraySkinCode;
public string skinCode;
void Start()
{
btn_buy = btn_buy_obj.GetComponent<Button>();
btn_equip = btn_equip_obj.GetComponent<Button>();
btn_equiped = btn_equiped_obj.GetComponent<Button>();
contador = 0;
arraySkinCode = skinCode.Split(',');
CreateInstance();
btn_left.onClick.AddListener(Left);
btn_right.onClick.AddListener(Right);
btn_buy.onClick.AddListener(Buy);
btn_equip.onClick.AddListener(Equip);
btn_equiped.onClick.AddListener(Equiped);
}
void Update()
{
}
void Left()
{
if(contador == 0){
contador = 3;
}else
{
contador--;
}
DestroyInstance();
CreateInstance();
}
void Right()
{
if(contador == 3){
contador = 0;
}else
{
contador++;
}
DestroyInstance();
CreateInstance();
}
void DestroyInstance()
{
Destroy(this.transform.GetChild(2).gameObject);
Destroy(this.transform.GetChild(3).gameObject);
}
void CreateInstance()
{
switch (contador)
{
case 0:
Instantiate(obj_0,this.transform.parent = transform);
break;
case 1:
Instantiate(obj_1,this.transform.parent = transform);
break;
case 2:
Instantiate(obj_2,this.transform.parent = transform);
break;
case 3:
Instantiate(obj_3,this.transform.parent = transform);
break;
default:
break;
}
switch (arraySkinCode[contador])
{
case "0":
Instantiate(btn_buy,this.transform.parent = transform);
break;
case "1":
Instantiate(btn_equip,this.transform.parent = transform);
break;
case "2":
Instantiate(btn_equiped,this.transform.parent = transform);
break;
default:
break;
}
}
void Buy()
{
Debug.Log("FOI BUY");
}
void Equip()
{
Debug.Log("FOI EQUIP");
}
void Equiped()
{
Debug.Log("FOI EQUIPED");
}
}
Última edição por Fagner em Seg Jan 11, 2021 5:49 pm, editado 1 vez(es) (Motivo da edição : Corrigir formatação)
lucas.manooel- Iniciante
- PONTOS : 1441
REPUTAÇÃO : 1
Respeito as regras :
Re: Não estou conseguindo ativar o evento do onClick após instanciar o botão
bem você está adicionando o método de click via script, também é possível adicionar pelo inspector. (e tenho quase certeza que adicionando por lá, vai funcionar, então por que não testar (o resultado final é o mesmo e teu script fica até mais limpo ))
bastaria tornar esses metodos buy, equip e equiped Public
e depois tu vai nos prefabs dos buttons e adiciona pelo inspector, tu vai ter que setar o gameobject na Scene que está com o Script com os 3 métodos.
bastaria tornar esses metodos buy, equip e equiped Public
e depois tu vai nos prefabs dos buttons e adiciona pelo inspector, tu vai ter que setar o gameobject na Scene que está com o Script com os 3 métodos.
- Desnecessário, Eu Espero, mas voce esta com a tag iniciante, então por que não...:
vá no componente UIButton do Botão no Inspector
assim como na imagem acima tem o OnClick(), clique no +, vai aparecer uns espaços para botar um gameobject, vc deve inserir o que contem o Script com os métodos.
uma vez o gameObject inserido você deve escolher o componente e o método public a ser chamado.
Última edição por dutrabr100 em Ter Jan 12, 2021 8:48 am, editado 2 vez(es)
Re: Não estou conseguindo ativar o evento do onClick após instanciar o botão
Alias me sinto curioso sobre umas coisas.
os botões serão usados em outras ocasiões separados ?
se a resposta for não você poderia apenas instanciar apenas um obj, contendo os 3 botoes como filhos...
e por que instanciar eles no start ?
se no inicio do jogo eles estarão lá você pode apenas deixa-los ativos...
os botões serão usados em outras ocasiões separados ?
se a resposta for não você poderia apenas instanciar apenas um obj, contendo os 3 botoes como filhos...
e por que instanciar eles no start ?
se no inicio do jogo eles estarão lá você pode apenas deixa-los ativos...
Tópicos semelhantes
» Não estou conseguindo criar uma conta na unity?
» Ativar audio após um tempo
» ATIVAR UM OBJETO QUANDO PASSAR POR UM TRIGGER E SUMIR APÓS 3 SEGUNDOS
» [RESOLVIDO] Como ativar uma câmera após coletar/destruir um objeto.
» Iluminação (estou com um problema)
» Ativar audio após um tempo
» ATIVAR UM OBJETO QUANDO PASSAR POR UM TRIGGER E SUMIR APÓS 3 SEGUNDOS
» [RESOLVIDO] Como ativar uma câmera após coletar/destruir um objeto.
» Iluminação (estou com um problema)
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos