Jump to content
Unity Insider Forum

Hilfe beim Steuerelement "Slider"


Dami1302

Recommended Posts

Hallo,

ich habe ein Problem bei einem Slider also einem Schieberegler. Ich habe ein Mini Game wo ich Munition benötige. Über den Schieberegler möchte ich die Anzahl der Munition bestimmen. Leider weiß ich nicht wie ich den Wert des Schiebereglers benutzen kann um ihn in einen anderen Skript als Munition einsetzen zu können. 

Ich hoffe jemand kann mir helfen. 

Link zu diesem Kommentar
Auf anderen Seiten teilen

in dem Script wo du die Munition hast:

public int munition;


public void setMunition(int muniUpdate)
{
	munition = muniUpdate;
}

jetzt einfach unterhalb deines Sliders auf das  + klicken, in dem leeren Feld dein Objekt hineinziehen wo dein Script drauf ist, dann als Funktion setMunition auswählen.

habs jetzt nicht getestet, müsste aber so gehen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Dami1302

Geht wirklich nicht, der Slider mag irgendwie keine int Variable, verwende stattdessen einen float:

public class scrMunition : MonoBehaviour
{

    public int munition =0;
  

    public void setMunition(float muniUpdate)
    {
        munition = Mathf.RoundToInt(muniUpdate);

    }
}

jetzt hast du wenn du im Slider auf dein Objekt gehst wo das Script drauf ist die Auswahl für dynamic float, wähle das an, dann müsste es passen. Bei mir geht es so.
 

slider.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

So sieht mein Script aus: 

 

#pragma strict

//für die Kugel
var bullet : GameObject;
//die Geschwindigkeit der Kugel
var bulletSpeed : int = 1000;
//für die Ausgabe
var ammoLabel : UI.Text;
public var munition : int;

function Fire()
{
    //eine neue Kugel abhängig vom Objekt erzeugen
    var myBullet:GameObject = Instantiate(bullet, transform.position, transform.rotation);
    //Kraft anwenden in die Aufwärtsrichtung, dadurch bewegt sich die Kugel
    myBullet.GetComponent.<Rigidbody>().AddForce(this.transform.up * bulletSpeed);
    //eine Kugel weniger
    munition--;
    //die Kugel nach 1 Sekunde zerstören
    Destroy(myBullet, 1);
}

function Update () {

    //beim Loslassen abfeuern
    if(Input.GetButtonUp("Fire1") && munition > 0) 
        Fire();
    ammoLabel.text = "Munition: " + munition;
}

 

Benutzt habe ich dann die Funktion Fire () 

Ich arbeite mit Javascript. 

Unbenannt.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Uff, also mit Java habe ich noch nie etwas gemacht.

Die Funktion Fire() bringt dir aber in dem Fall gar nichts, du möchtest ja mit deinem Slider nicht schiessen:D

Dir fehlt auf jedenfall die entsprechende Funktion in deinem Script.

Irgendwas wie:

function setMunition (float muniUpdate) {

 munition = Mathf.RoundToInt(muniUpdate);
} 

Aber wie das jetzt genau in java aus zu sehen hat bin ich überfragt🙃

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Jomnitech Wir reden hier von UnityScript, das ist ein JavaScript-Fork, und beides hat mit Java nix am Hut.

@Dami1302 UnityScript benutzt man heute einfach nicht mehr. Einfach... gar nicht. Aber wenn du vor dem Unmstieg auf C# noch dieses Script brauchst...

function SetMunition(newMunition : float) {
  munition = Mathf.RoundToInt(newMunition);
}

Wenn's damit noch Probleme gibt... benutze C#. Solltest du, wie gesagt, sowieso.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...