Jump to content
Unity Insider Forum

ThE_MAiTiX

Members
  • Content count

    21
  • Joined

  • Last visited

Community Reputation

0 Neutral

About ThE_MAiTiX

  • Rank
    Member
  • Birthday 12/14/1998

Profile Information

  • Gender
    Male
  1. Hallo. Vor einiger Zeit habe ich ein Spiel in Unity Erschauen welches Zufällig Kisten auf einer Großen Karte Spawnt diese kann man einsammeln und erhält dafür seine Belohnungen. wenn man nun diese Kisten eingesammelt hat sind sie weg und Spawnen nach einem 3 Minuten Counter wieder neu auf der Karte. Nun ist das Problem wenn ich die App einfach neustarte die Kisten sofort wieder da sind und man denn 3 Minuten Countdown einfach überspringen kann. Gibt es eine Möglichkeit in meine PickUpChest klasse die eingesammelte Kiste abzuspeichern und sollange sie abgespiechert ist nichtmehr erscheint und dieses wieder mit meinem 3 Minuten Countdown zu reseten. Also z.b in der PickupChest Klasse beim einsammeln Abspeichern mit dem Countdown die Abspeicherung löschen und wahrscheinlich brauche ich noch eine Start klasse die Abfragt ob die Kisten momentan gespeichert ist oder nicht. using UnityEngine; public class PickupCoins : MonoBehaviour { private void OnMouseDown() { var Cs = GameObject.Find("Main Camera").GetComponent<Cs>(); Cs.IncreaseLevel(); Destroy(gameObject); //Zum Beispiel Objekt abspeichern } } using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; using UnityEngine.UI; public class UpdateTime : MonoBehaviour { float currentTime = 0f; float startingTime = 180f; [SerializeField] Text countdownText; void Start() { currentTime = startingTime; } void Update() { currentTime -= 1 * Time.deltaTime; countdownText.text = currentTime.ToString(); if (currentTime <= 0) { currentTime = 0; currentTime = startingTime; Application.LoadLevel(1); //Bissher dafür gedacht die Sceene einfach neuzustarten da die Objekte dann resetet werden //Reseten von Objekt } } } über eine Antwort würde ich mich Freunen.
  2. Ahh okkaay ich danke dir für die Hilfe
  3. Ahh super danke es Funkioniert Gibts dafür gründe das du diese Methode nicht entfehlen würdest oder ist das einfach nur unsauberes Programmieren?
  4. Ich hab versuche aus der GetXP(); eine static methode zu machen nur leider wollen dann alle methoden drum rum auch zu einer static methode werden und spätestens bei der Update(); methode kann ich kein static mehr setzten weil ich denn Slider ja trotzdem weiterhin ausswählen muss was auch sein muss ist da das Script sich auf der MainCamera befindet.
  5. Ich weiß nur leider nicht wie genau ich das auf mein Script anwenden soll solte ich nur eine Methode dort auf Static setzten ist sofort der ganze code nichtmehr verwendbar.
  6. Ja, hab ich alles erledigt.
  7. Also soll ich meine Level klasse auf der MainCamara ohne public statics lassen mein Pickupchest script aufs Gameobjekt und dein PlayerStats script niergends hin?
  8. Mein Ziel ist es eigendlich nur XP zu vergeben wenn der Spiel die auf der Map erscheinenden Kisten anklickt hab das Ganze mal versucht umzusetzen. nur leider fehlen dann auch die Referenzen zum Text wo mein Level angezeigt wird und mein Slider der denn XP wert anzeigt. Script für die Kiste: using UnityEngine; using System.Collections; using UnityEngine.SceneManagement; using UnityEngine.UI; public class PickupChest : MonoBehaviour { private void OnMouseDown() { Debug.Log("Chest Pickup"); Level.LvLprogress += 4; Destroy(gameObject); } } PlayerStats Script: using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public static class Level { static public Slider LevelBar; static public Text TxtLvLHealth; static public Button BtnTakeDamage; static public Button BtnGetHealth; static public int LvLprogress = 0; static public int SaveXP; static public int level = 1; static public Text levelDisplay; static void Start() { BtnTakeDamage.onClick.AddListener(delegate { TakeXP(); }); BtnGetHealth.onClick.AddListener(delegate { GetXP(); }); SaveXP = PlayerPrefs.GetInt("SliderWert2"); LvLprogress = SaveXP; LevelBar.value = SaveXP; level = PlayerPrefs.GetInt("Level"); UpdateHealthBar(); SaveAndDisplayLevel(); } static public void TakeXP() { LvLprogress = LvLprogress - 100; if (LvLprogress < 0) { LvLprogress = 0; } UpdateHealthBar(); } static public void GetXP() { LvLprogress = LvLprogress + 4; if (LvLprogress > 100) { LvLprogress = 0; IncreaseLevel(); } UpdateHealthBar(); } static public void UpdateHealthBar() { LevelBar.value = LvLprogress; SaveXP = Convert.ToInt32(LevelBar.value); //MakeSave = HealthBar.value; PlayerPrefs.SetInt("SliderWert2", SaveXP); PlayerPrefs.Save(); } static public void IncreaseLevel() { level++; SaveAndDisplayLevel(); } static public void ResetLevel() { level = 1; SaveAndDisplayLevel(); } static private void SaveAndDisplayLevel() { PlayerPrefs.SetInt("Level", level); PlayerPrefs.Save(); levelDisplay.text = level + ""; } }
  9. Sobald ich in meinem Script auch nur etwas mit statics mache wird es sofort nicht mehr anerkannt. ich kanns nicht mehr in meine Main Camera ziehen und sobald ich das Singleton verfahren einsetze bekomme ich Folgenden Fehler In Zeile 18 von PickupBridge befindet sich XP.GetXP();
  10. Ich Habs versucht nur leider ohne Erfolg, Ich denke das der Fehler irgendwo bei private void Awake() { if (singleton == null) { singleton = this; } Sein muss weil ab da nichts mehr ausgegeben wird. 😕
  11. Ich habe jetzt mal versuch es umzusetzen leider ohne erfolg using UnityEngine; using System.Collections; using UnityEngine.SceneManagement; using UnityEngine.UI; public class PickupChest : MonoBehaviour { public Motivation Health; public Level XP; public static Level singleton { get; private set; } private void Awake() { if (singleton == null) { singleton = this; } else { Destroy(gameObject); } } private void OnMouseDown() { if (singleton) { Debug.Log("Chest Pickup"); Destroy(gameObject); Health.GetHealth(); XP.GetXP(); } } }
  12. Ich habe in Unity C# leider noch nicht mit statischen Variablen gearbeitet.
  13. Gibt es noch irgendwelche anderen Möglichkeiten. ich habe es mir Drei mal durchgelesen und verstehe leider nichts.
  14. Hallo Ich habe die letzte Zeit damit verbracht eine Große Map zu gestallten auf dieser Zufällig Kisten Zufinden sind Diese Kisten tuh ich als Prafab in meinem Asset Ordner Abspeichern jetzt zu meinem Problem wenn ich dies Tuhe verliert mein GameObjekt alles Mesh verlinkungen hier ein vorher nachher bild zur Verdeutlichung. Vorher: Als GameObjekt Nachher: Als Prefab. Ich Währe sehr dankbar wenn mir Jemand sagen könnte wie ich Verlinkungen behalten könnte oder replacen könnte sobald ich mein Prefab Ausführe. Code Falls benötigt: using UnityEngine; using System.Collections; using UnityEngine.SceneManagement; using UnityEngine.UI; public class PickupBridge : MonoBehaviour { public Motivation Health; public Level XP; void OnMouseDown() { Debug.Log("Chest Eingesammelt"); Destroy(gameObject); Health.GetHealth(); XP.GetXP(); } }
  15. ThE_MAiTiX

    Eine Zahl Erhöhen lassen Script

    Super ich danke dir musste nurnoch die SaveAndDisplayLevel(); In die Start(); Methode Einfügen dann lief alles super
×