Jump to content
Unity Insider Forum

"Richtige Pause" Skripten


Unity3DFreak

Recommended Posts

Hallo,

 

Ich versuche mich grade an einem Pausenmenü Skript, ein Menü zu öffnen ist nicht das Problem ich schaffe es nicht alles zu pausieren.

Ich hätte es gerne so ähnlich wie wenn man in Unity während mach spielt den Pausebutton drückt, und man einzelne Objekte als Ausnahme hinzufügen kann die nicht beeinflusst werden.

Ich befürchte zwar das dies nicht so einfach ist wie es klingt, aber vielleicht kann mir ja jemand in die richtige Richtung helfen :).

 

Mit freundlichen Grüßen

Unity3DFreak

 

PS: Ich möchte nicht einfach irgendwelche Skripte vorgeschrieben haben denn 1. Ich weiß das ist viel Arbeit je nachdem was man machen möchte, und 2. möchte ich auch halbwegs verstehen warum das jetzt so und so funktioniert. :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

 

Danke für die Hilfe habe jetzt mal ein Skript geschrieben und wollte fragen ob man das als Pausemenü Skript verwenden kann oder ob ich irgendwas ändern muss.

 

using UnityEngine;
using System.Collections;

public class PauseMenue : MonoBehaviour {

bool menueOffen = false;

void Update ()
{
 if(Input.GetKeyUp(KeyCode.Escape) && !menueOffen)
 {
  Time.timeScale = 0;
  menuOffen = true;
 }
 if(Input.GetKeyUp(KeyCode.Escape) && menueOffen)
 {
  Time.timeScale = 1;
  menueOffen = false;
 }
}
}

 

Bei allen anderen Update funktionen in den anderen Skripten habe ich noch ein if(time.timeScale != 0){CODE}

hoffe ich kann das so machen ohne das etwas beeinträchtigt wird :)

 

Mit freundlichen Grüßen

Unity3DFreak

Link zu diesem Kommentar
Auf anderen Seiten teilen

Man kann da noch ein bisschen was verkürzen.

Dein zurueckZumSpiel macht ja die exakt den einen Fall von deinem Update.

Du kannst die Funktion also umschreiben zu

public void SetMenuState(bool on)
{
 menueOffen = on;
 PauseCanvas.SetActive(on);
 Time.timeScale = on ? 0 : 1;
}

 

Deine Update-Funktion ließe sich dann reduzieren auf

if(Input.GetKeyUp(KeyCode.Escape))
{
 SetMenuState(!menueOffen);
}

 

Außerdem: Statt drei Variablen zu erstellen, die eine Position darstellen, warum nicht einfach einen Vector3? Dafür sind die Dinger nämlich da.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du kannst einfach überall statt SpielerPositionX spielerPosition.x schreiben.

Um das dann etwas schöner zu machen, kannst du zum Laden und Speichern eines Vektors Methoden schreiben:

public static void SetVector3(string key, Vector3 value)
{
 PlayerPrefs.SetFloat(key + ".X", value.x);
 PlayerPrefs.SetFloat(key + ".Z", value.y);
 PlayerPrefs.SetFloat(key + ".Y", value.z);
}

public static Vector3 GetVector3(string key)
{
 return new Vector3(
PlayerPrefs.GetFloat(key + ".X"),
PlayerPrefs.GetFloat(key + ".Z"),
PlayerPrefs.GetFloat(key + ".Y"));
}

und dann diese aufrufen wie du es von PlayerPrefs kennst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...