Jump to content
Unity Insider Forum

ClickerGame Automatisch Geld generieren


Aron23

Recommended Posts

Ich springe im Spiel zwischen einzelnen Scenes hin und her und wenn ich dies mache hört das Geld auf zu generieren.

Ich suche einen weg wie ich in jeder meiner Scenes dennoch automatisch Geld bekomme.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AutoCoins : MonoBehaviour
{
    public bool CreatingCoins = false;
    public static int CoinIncrease = 1;
    public int InternalIncrease ;

    void Update()
    {
        InternalIncrease = CoinIncrease;
        if (CreatingCoins == false)
        {
            CreatingCoins = true;
            StartCoroutine (CreateCoins());
        }
    }
    IEnumerator CreateCoins()
    {
        GlobalCoins.CoinCount += InternalIncrease;
        yield return new WaitForSeconds(1);
        CreatingCoins = false;
    }
}

 

Danke für jede Hilfe.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bitte gerne Code in Code-Tags (<>-Knopf über dem Textfeld) packen :)

Ich empfehle, darüber nachzudenken, ob der Szenenwechsel nötig ist, aber ansonsten hilft dir dieses Pattern:

public class MoneyGenerator : MonoBehaviour
{
  private static MoneyGenerator instance;
  
  private void Awake()
  {
    if (instance)
    {
      Destroy(gameObject);
    }
    else
    {
      instance = this;
      DontDestroyOnLoad(this);
    }
  }
}

Finde den Code recht aussagekräftig, aber bei Fragen gerne fragen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Szenenwechsel ist denke mal nicht nötig doch ich weiß nicht ganz wie ich es umsetzen soll. Ich habe mehrere Bereiche (Miene, Markt ...) und in jedem soll es andere Buttons geben und andere Hintergründe und man soll nur auf Knopfdruck dort hingelangen. Da ich nicht wirklich viel dazu gefunden habe ,hab ich es mit einem Szenenwechsel Probiert nur da klappt das automatische Geld generieren nicht.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Szenenwechsel bedeutet hat, ganz stumpf gesagt, dass alle Objekte (mit Ausnahmen) gelöscht werden und alle Objekte der neuen Szene geladen werden. Mit additivem Szenenladen kannst du den ersten Teil, das Löschen, überspringen. Ein Szenenwechsel lohnt sich daher zunehmend mit der Anzahl an Objekten, die du nicht mehr haben willst. Dagegen stehen halt die Ladezeiten und die Initialisierungsarbeit der frischen Szene (alles, was in Start passiert, zum Beispiel). Wenn du also das nächste Super-Mario-Level lädst, ist ein Szenenwechsel klug. Wenn du aber den Benutzer im Fünf-Sekunden-Takt zwischen verschiedenen Menüs wechseln lässt, dann ist es vielleicht sinnvoller, die Objekte nicht zu löschen, um sie dann gleich wieder neu laden zu müssen. Wenn du alles in einer Szene hast, dann ist es auch einfacher, Objekte miteinander interagieren zu lassen. Wenn ein Button in der Mine etwas beim Markt auslösen soll, dann kannst du das einfach verknüpfen, anstatt da außerhalb aller Szenen Platz für diese Interaktion zu implementieren.

Mit meinem Code da oben kannst du ein Objekt definieren, dass Szenenwechsel überlebt. Die if-Abfrage ist dafür da, dass das Objekt, das ja beim zweiten Laden der Szene wieder neu geladen wird, sich selbst zerstört, damit es nicht zweimal existiert.

Mit GameObject.SetActive kannst du Objekte deaktivieren und wieder aktivieren. Wenn du also alles in eine Szene schmeißt, kannst du damit dafür sorgen, dass nur die richtigen Buttons usw. zu sehen sind.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 weeks later...
Am 29.9.2020 um 14:38 schrieb Sascha:

Wenn du aber den Benutzer im Fünf-Sekunden-Takt zwischen verschiedenen Menüs wechseln lässt, dann ist es vielleicht sinnvoller, die Objekte nicht zu löschen, um sie dann gleich wieder neu laden zu müssen. Wenn du alles in einer Szene hast, dann ist es auch einfacher, Objekte miteinander interagieren zu lassen.

Zu dem Thema hätte ich eine Nachfrage (versuche das im 2D-Modus umzusetzen):

Ich habe eine Übersichtskarte mit sagen wir mal 4 Gebäuden darauf. Die GO (nennen wir sie mal Arbeiter) kann ich auf dieser Ü-Karte von Gebäude zu Gebäude schicken und dann die Gebäude betreten. In den Gebäuden sollen sie dann Aufgaben erfüllen. Interaktion zwischen dem Spieler und dem einzelnen GO findet auch innerhalt der Gebäude statt. Der Wechsel zwischen der Ü-Karte in die einzelnen Gebäude und zurück findet sehr schnell statt - in etwa im beschriebenen 5-Sekunden-Takt.

Die Variante mit dem Szenenwechsel ist offensichtlich (nach oben beschriebenen und nach meinen Selbstversuchen gestern Abend) keine praktikable Lösung.

Wäre es ratsam, Ü-Karte und einzelne Gebäude alle in eine Szene (beispielsweise nebeneinander) zu "zeichnen" und dann den Wechsel über Positionswechsel der Kamera stattfinden zu lassen? Dann arbeiten ja alle Arbeiter weiter oder bewegen sich usw. während man Räume wechselt.

Oder gibt es eine noch bessere Lösung, die mir bei meinen Recherchen verborgen blieb?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...