Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

84
Visualizações
Duplicando funciones

Cada vez que llamo a la función Instanciar, duplica cada función con ella y duplica cada número

 private Button[] Checks; public GameObject tni;//TextAndInput public int Coins; public TMPro.TextMeshProUGUI Score; private void Start() { Checks = GetComponentsInChildren<Button>(); foreach(Button button in Checks) { button.onClick.AddListener(Add); } } private void Update() { Score.SetText(Coins.ToString()); if (Input.GetKeyDown(KeyCode.Space)) { Duplicate(); } } public void Add() { Coins++; } public void Duplicate() { GameObject duplicate = GameObject.Instantiate(tni); duplicate.transform.position=new Vector3(tni.transform.position.x, tni.transform.position.y-100, tni.transform.position.z); duplicate.transform.SetParent(GameObject.FindGameObjectWithTag("Canvas").transform, false); Button ButtonDuplicate = GetComponentInChildren<Button>(); ButtonDuplicate.onClick.AddListener( () => Add() ); }

** Por ejemplo, la función de agregar suma 2 en el primer botón y 1 en el botón duplicado. y cuando duplique los botones duplicará primero el botón 1 luego cuando duplique de nuevo duplicará otros 2 entonces ahora son 4 botones y si los duplico de nuevo serán 8 y así sucesivamente si saben cómo solucionarlo Por favor dígame **

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

La línea problemática parece ser

 Button ButtonDuplicate = GetComponentInChildren<Button>();

siempre haces esto en el mismo objeto (aquel al que está adjunto este script), así que

 ButtonDuplicate.onClick.AddListener( () => Add() );

siempre agrega una devolución de llamada adicional a Add para el primer botón que se encuentra entre los elementos secundarios de este objeto.


Me parece que más bien querías hacer

 Button ButtonDuplicate = duplicate.GetComponentInChildren<Button>();

para obtener el componente del botón que acaba de generar.


Actualizar

A tu comentario sobre el puesto

En

 duplicate.transform.position=new Vector3(tni.transform.position.x, tni.transform.position.y-100, tni.transform.position.z);

siempre toma la misma posición tni que nunca cambia y desde allí va -100 en Y .

En su lugar, almacene la última posición generada, por ejemplo, como

 private Vector3 currentSpawnPos; private void Start () { ... currentSpawnPos = tni.transform.position - Vector3.up * 100; } public void Duplicate() { ... duplicate.transform.position=new Vector3(currentSpawnPos); currentSpawnPos -= Vector3.up * 100; ... }

O, en realidad, en lugar de calcular eso por su cuenta, podría usar un VerticalLayoutGroup y simplemente agregar sus botones y se colocarán automáticamente uno debajo del otro

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda