Stradmann 3 Report post Posted January 23 Hola! Tengo un trozo de script que parece funcionar bien, pero cuando lo miro mas de cerca hay algo raro. Me explico: ... for (int i = 0; i < charactersToSelect.Length; i++) { charactersToSelect[i].onValueChanged.AddListener(delegate { CharacterSelectionToggleReaction(thisMision.maxCharactersAvailable, i); }); } } public void CharacterSelectionToggleReaction (int maxChar, int index) { Debug.Log("running function" + index); int characterCount = 0; for (int i = 0; i < charactersToSelect.Length; i++) { if (charactersToSelect[i].isOn) { characterCount++; } } if (characterCount == maxChar) { for (int i = 0; i < charactersToSelect.Length; i++) { if (!charactersToSelect[i].isOn) { charactersToSelect[i].enabled = false; } } } else { for (int i = 0; i < charactersToSelect.Length; i++) { charactersToSelect[i].enabled = true; } } } El comportamiento final es el esperado, pero, en el for del principio, la "i" que paso como parametro en el AddListener simpre me da un valor de 6, es decir que me envia el charactersToSelect.Length. Ese es el primer fallo. Luego cuando hago clic en el boton me aparecen 200 o 2000 mensajes de "running function", con un solo clic... solo deberia aparecer 1 mensaje por clic. Me parece bastante extraño asi que por eso lo cuelgo aquí a ver si veo el porqué y como resolverlo.. Gracias!! Share this post Link to post Share on other sites
Stradmann 3 Report post Posted January 25 Ya esta resuelto!! lo primero lo solucione añadiendo int j = i; en el primer for, i pasarle la j en vez de la i. Ha funcionado. el segundo, es que la funcion que llama a esta que esta puesta aqui esta en el Update y no cerraba del todo bien la puerta, asi que añadí un bool que se pusiera false al final del if i asi no entrara mas. Share this post Link to post Share on other sites