killstriker64 Geschrieben 16. Juli 2019 Melden Share Geschrieben 16. Juli 2019 Hallo liebe Unity-Community, ich habe vorgehabt einen Schwierigkeitsgrad im Spiel einzubauen. Dabei sollen auf Knopfdruck die Werte von Variablen im Spielgeschehen geändert werden. Auf Easy, Default und Hard (Funktionen im Script) habe ich jeweils die Werte der einzelnen Variablen (Spielverhalten von Objekten) geändert. Diese Änderungen sollen sich natürlich auch ingame bemerkbar machen. Beispielsweise möchte ich, dass der 'float lifetime' Wert von (default) 1f bei Knopfdruck auf 0.5f geändert wird und diese Änderung in der Laufzeit wirksam ist. Ich hab es hinbekommen, dass die Änderungen vor Spielstart wirksam werden (durch Bool-Werte: also Easy und Default Schwierigkeitsgrade sind auf 'false' und Hard ist auf 'true' für den Schwierigkeitsgrad Hard ==> siehe Anhang). Jedoch möchte ich dies wie gesagt während des Spiels ändern und wirksam machen. Hat jemand möglicherweise Ideen bzw. Lösungsvorschläge, wie man dieses Problem bewältigen kann? Zusätzlich sei noch erwähnt, dass ich die neu bearbeiteten Werte bei neuladen der Szene in Laufzeit beibehalten möchte. Mit freundlichen Grüßen killstriker64 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
TheOnlyOne Geschrieben 17. Juli 2019 Melden Share Geschrieben 17. Juli 2019 Wenn du etwas am Start aufrufen möchtest, dann benutzt du die Start/Awake Methoden. Wenn du ewas zur Laufzeit aufrufen möchtest, dann benutzt du Update Methode. https://docs.unity3d.com/ScriptReference/MonoBehaviour.Update.html Noch besser wäre es natürlich wenn du eigene Funktion schreibst und nur einmal diese aufrufst, mit einem Knopf zum Beispiel. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
devandart Geschrieben 18. Juli 2019 Melden Share Geschrieben 18. Juli 2019 Statt offensichtlich boolschen Werten für den Schwierigkeitsgrad würde ich eine Enumeration nutzen, damit Du immer nur einen Zustand haben kannst. //Beispiel public enum GameDifficulty { Easy = 0, Medium = 1, Hard = 2 } //... in deiner Komponente public GameDifficulty difficulty = GameDifficulty.Easy; Um die lifetime diesem anzupassen, könntest Du z.B. ein Dictionary nutzen. //in deiner Komponente da oben private Dictionary<GameDifficulty, float> lifetimeDictionary = new Dictionary<GameDifficulty, float>(); void Start() { lifetimeDictionary.Add(GameDifficulty.Easy, 0.1f); lifetimeDictionary.Add(GameDifficulty.Medium, 0.5f); lifetimeDictionary.Add(GameDifficulty.Hard, 1f); } void Update() { //da wo du deine lifetime nutzt... lifetime = lifetimeDictionary[difficulty]; //das ist die difficulty aus dem oberen Pseudocode } Nun kannst Du die "difficulty" ändern und es wird im Update immer die im Dictionary festgelegte lifetime genutzt. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.