Ich habe zwei verschiedene Dropdowns in Unity erstellt die jeweils die Zahlen 1-5 wählbar machen und möchte nun gerne diese beiden mithilfe von einem c # - script auslesen und z.b. in der Console ausgeben oder später speichern.
Kann mir da jemand eine anregung geben wie ich das machen kann.
Habe bisher zu dem Thema leider kaum etwas gefunden was mir weiter hilft.
mein erster Ansatz:
mit System;
Verwenden von System.Collections;
mit System.Collections.Generic;
mit UnityEngine;
mit UnityEngine.UI;
öffentliche Klasse TestAnzeige : MonoBehaviour
{
privates Dropdown-Dropdown-Dropdown1;
privates Dropdown-Dropdown-Dropdown2;
void Start()
{
dropdown1 = GetComponent<Dropdown>();
dropdown1.onValueChanged.AddListener();
dropdown2 = GetComponent<Dropdown>();
dropdown2.onValueChanged.AddListener();
Debug.Log(dropdown1 + "Erster Wert nun folgt der zweite: " + dropdown2);
}
}
Diese Schreibweise + Info könnte für dich eventuell auch interessant sein:
// Debug.Log wird jedes Mal bei einem onValueChanged event ausgeführt. value == der neu gesetzte Wert des Dropdowns.
UnityEngine.UI.Dropdown dropdown = this.GetComponent<UnityEngine.UI.Dropdown>();
dropdown.onValueChanged.AddListener((value) =>
{
Debug.Log(value);
});
// der aktuelle Wert des Dropdowns kann auf diese Weise zu jedem Zeitpunkt direkt ausgelesen werden
Debug.Log(dropdown.value);
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class dropdownValue : MonoBehaviour
{
Dropdown m_Dropdown;
public Text m_Text;
void Start()
{
//Fetch the Dropdown GameObject
m_Dropdown = GetComponent<Dropdown>();
//Add listener for when the value of the Dropdown changes, to take action
m_Dropdown.onValueChanged.AddListener(delegate {
DropdownValueChanged(m_Dropdown);
});
//Initialise the Text to say the first value of the Dropdown
m_Text.text = "First Value : " + m_Dropdown.value;
}
//Ouput the new value of the Dropdown into Text
void DropdownValueChanged(Dropdown change)
{
m_Text.text = "New Value : " + change.value;
}
}
ich hab das jetzt mal mit diesem Code versucht bekomme dann aber leider:
“NullReferenceException: Object reference not set to an instance of an object
dropdownValue.Start () (at Assets/Scripts/dropdownValue.cs:17)”
m_Dropdown ist null, vermutlich weil dein script auf ein gameobject drauf gelegt wurde, welches kein Dropdown Element drauf hat. GetComponent sucht nur im aktuellen GameObject nach der Komponente. Du kannst die Variable auch public machen und über den Inspektor über drag&drop zuweisen. Ich würde dir empfehlen, Tutorials zu GetComponent zu suchen :).
As a german myself I had a good laugh when I saw that auto translated script. To me it looks painfully odd :). Funny though that the translator translated using with “mit” in most cases and with “verwenden von” only once (which would be the more correct translation here).
Anyways, you really should try to stick to english here.
public void HandleInputData(int val)
{
Debug.Log(val + 1);
}
Das Script mußt du aber auf einem Gameobjekt namens Main platzieren sonst funktionirt es nicht
und das Script dann beim OnChanged Event im Inspektor angeben. Val gibt immer die nummer in der Liste
aus.