Jump to content
Unity Insider Forum
Sign in to follow this  
UnityProband

Canvas Image Scroll View

Recommended Posts

Hallo liebe Unity Freunde!

Ich habe ein GUI erstellt mit 5 Buttons und 5 Images. Ebenfalls habe ich ein sogenanntes ScrollView als Child unter dem entsprechenden Canvas erstellt, welches die 5 Images je nach Klick des entsprechenden Buttons anzeigt. Jetzt wollte ich gerne mit Hilfe eines C#-Skript folgende GUI-Funktionalität umsetzen. Wenn ich einen der Button klicke, dann wird im ScrollView eines der entsprechenden Image angezeigt. Das C#-Skript ist als Komponente auf dem Canvas hinzugefügt.


mycanvas = GetComponent<Canvas>();

testbutton = mycanvas.gameObject.GetComponentInChildren<Button>();

myimage = mycanvas.gameObject.GetComponentInChildren<Image>();
  
foreach(Button test in testbutton){
  Debug.Log (test.name);
  }

foreach(Image pc in myimage){
  Debug.Log (pc.name);
  }
  
testbutton[1].Select();
  
myimage[5].enabled = false;

Das Skript funktioniert so weit! Aber wie könnte ich jetzt z. B. auf die Komponente Content des ScrollView zugreifen, damit ich diese austauschen kann mit den einzelnen Images?

Hat Jemand eine Idee? Wenn ich das Klick-Event eines Buttons auflösen möchte, dann müsste ich doch einen Lisener den einzelnen Buttons zuordnen können.

Über Hilfe wäre ich sehr dankbar!

VG 

Share this post


Link to post
Share on other sites

Also wenn ich es richtig verstehe, möchtest du, dass, wenn ein Button geklickt wird, der Scroll-View an die Position des Bildes springt?

Wenn ja, musst du einfach das Rect mit "verticalNormalizedPosition" bewegen.

Je nach Button musst du dann einfach sagen, wohin das Rect springen soll. Hab ich zum Beispiel bei mir in den Datenschutzbestimmungen genutzt und würde so aussehen:

rectDatenschutz.verticalNormalizedPosition = 1f;

Du müsstest dann halt nur eine Methode pro Button machen oder eben Parameter übergeben:

public void button_1() {
	rect.verticalNormalizedPosition = 1f;
}

public void button_2() {
	rect.verticalNormalizedPosition = 50f;
}

public void button_3() {
	rect.verticalNormalizedPosition = 100f;
}

public void button_4() {
	rect.verticalNormalizedPosition = 150f;
}

public void button_5() {
	rect.verticalNormalizedPosition = 200f;
}

oder halt

public void button(int wert) {
	switch(wert)
		case 1: 
			rect.verticalNormalizedPosition = 50f;
			break;
		case 2:
			rect.verticalNormalizedPosition = 100f;
			break;
		//ect.
}

Hier mal zum nachlesen. :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×