Ich schreibe eine Neustart-Funktion, wo ich die Instanz aller Prefabs, die zu einem Panel gehören, löschen möchte. Dieser Code fügt ein neues Eingabefeld an die MutterDestroy Instanz aller Prefab-Klon funktioniert nicht
private void ShowInputField(){
GameObject inputFieldGameObject = inputFieldObjectPool.GetObject();
//reset pool since it may have been disabled by the DeActivatePreviousInputFields function
InputField inputField = inputFieldGameObject.GetComponent<InputField>();
inputField.Select();
inputField.ActivateInputField();
inputField.interactable = true;
inputField.readOnly = false;
//make this the previous inputs
previousInputs = inputFieldGameObject;
//assign the prefab to its parent panel
inputFieldGameObject.transform.SetParent (inputFieldParent);
inputFieldGameObject.transform.localScale = Vector3.one;
Canvas.ForceUpdateCanvases();
//make scroll bar always show the last added input field
GameObject.Find ("ScrollView").GetComponent<ScrollRect>().horizontalNormalizedPosition = 1;
}
Das Bild unten zeigt, wie es aussieht vor dem Neustart
der Code für den Neustart, die alle Instanzen des Fertig zerstört und fügt man wieder ist unten gezeigt.
void RestartGame(){
//gets all elements of the parent
InputField [] childElements = letterPanel.GetComponentsInChildren<InputField>();
Debug.Log (childElements.Count());
foreach (var item in childElements) {
Destroy (item);
}
ShowInputField()
}
dies sollte alle Instanzen der Fertig zerstören, aber es macht es sie nur bearbeitet werden, nicht mit dem Bild, um es
Wie löse ich dieses Problem unten zeigt? Vielen Dank im Voraus ...
Was zeigt 'Debug.Log (childElements.Count())'? Vielleicht zerstört es sie tatsächlich, aber 'ShowInputField()' erstellt die neuen, die Sie sehen. Können Sie dies überprüfen, indem Sie 'ShowInputField()' auskommentieren. – Programmer
Ich habe getan, dass ich die gleiche Ausgabe wie oben bekomme. Das 'ShowInputField()' zeigt ein neues Eingabefeld – Abdul
Was zeigt Debug.Log (childElements.Count())? – Programmer