Shop System in Unity

Gefällt Dir der Artikel? Dann teile ihn doch, um diese Informationen auch anderen zugänglich zu machen!

Seiteninhalt

Hallo und Willkommen. In dieser Videoreihe programmieren wir unser eigenes Shopsystem für unsere Anwendungen beziehungsweise Spiele in Unity. Bevor wir aber direkt in Unity springen und wild darauf los programmieren, starten wir mit ein paar theoretischen Überlegungen. Wir müssen uns zuerst im klaren sein, welche Art von Shop wir erstellen und wie dieser aufgebaut sein soll.

Theoretische Grundlage

Folgende Fragen müssen wir uns stellen:

  1. Mit welcher Währung bezahlt der Spieler in dem Shop.
    1. Münzen / Währung aus dem Spiel
    2. Echtgeld
    3. Alternatives (Anschauen von Werbung, Liken einer Seite, etc.)
  2. Sind die Items im Shop automatisch sortiert oder hat der Spieler die Möglichkeit aus verschiedenen Optionen zum Sortieren auswählen
  3. Können Items die nicht bezahlbar sind ausgeblendet werden
  4. Sind alle Items in einem großen Shop-Window oder gibt es eine Unterteilung in Kategorien
  5. Falls Kategorien verwendet werden, welche Art der Darstellung wird gewählt. (Tabs, Fenster, etc)
  6. Können Items die nicht bezahlbar sind ausgeblendet werden
  7. Sind alle Items in einem großen Shop-Window oder gibt es eine Unterteilung in Kategorien
  8. Falls Kategorien verwendet werden, welche Art der Darstellung wird gewählt. (Tabs, Fenster, etc)

Entsprechend deiner Antworten kann sich der Aufwand deines Shops drastisch erhöhen. Wenn du bereits andere Videos von mir gesehen hast, dann weißt du bereits, dass es mir in den ersten Schritten darum geht unser Ziel so einfach wie möglich zu erreichen. Später können wir das ganze immer noch komplizierter gestalten. In unserem Fall heißt dies nun, dass wir einen Shop erstellen bestehend aus inGame-Währung und das primäre Ziel für uns ist das Kaufen von Items.

Ablaufbeschreibung:

  • Im Hauptmenü befindet sich ein Button mit dem Text “Shop”
  • Hier werden einzelne Items für den Spieler angezeigt
  • Die Items können in Form von Münzen erworben werden
  • Das Shop-Window zeigt automatisch den aktuellen Kontostand der Münzen an
  • Mit einem Klick auf ein Item kauft der Spieler das Item
  • Das Item ist nun während des Spiels verfügbar, hierfür müssen wir ein zentrales Skript haben in dem dafür gesorgt werden, dass die Items freigeschalten werden bzw. die Anzahl entsprechend zum Einkauf im Store aktualisiert wird
item-shop-erstellen-01-mockup.PNG (21 KB)

Interface Design

Items kaufen

Items verwenden

Kaufbarer Charakter

Charakter aktivieren

ShopManger.cs

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

public class ShopManager : MonoBehaviour {

	public int kontostand;
	public Text kontostandText;
	public Inventory myInventory;

	// Use this for initialization
	void Start () 
	{
		KontostandAktualisieren ();
	}

	public void ItemKaufen(int itemPreis)
	{
		// Kontostand überprüfen
		if (kontostand >= itemPreis) 
		{
			Debug.Log("Item wurde gekauft");
			// Item zum Inventar hinzufügen
			myInventory.ChangeAmmo(5);
			// Kontostand neu berechnen
			kontostand = kontostand - itemPreis;
			Debug.Log("Kontostand: "+kontostand);
			// Kontostand aktualisieren (Textfeld)
			KontostandAktualisieren();
		}
	}

	public void DarkCharKaufen(int itemPreis)
	{
		// Kontostand überprüfen
		if (kontostand >= itemPreis) 
		{
			Debug.Log("Dark Charakter wurde gekauft");
			// Char im Inventory aktivieren
			myInventory.ActivateDarkChar();
			// Kontostand neu berechnen
			kontostand = kontostand - itemPreis;
			Debug.Log("Kontostand: "+kontostand);
			// Kontostand aktualisieren (Textfeld)
			KontostandAktualisieren();
			// Button deaktivieren
			GameObject.Find("DarkCharButton").GetComponent<Button>().interactable = false;
		}
	}

	void KontostandAktualisieren()
	{
		kontostandText.text = kontostand.ToString();
	}
}
				
			

ShopSelector.cs

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

public class ShopSelector : MonoBehaviour {

	// Verlinkung mit MainMenu Panel + Shop Panel
	public GameObject mainMenuPanel;
	public GameObject shopPanel;

	// Use this for initialization
	void Start () {
		ShowMenuPanel ();
	}

	public void ShowShopPanel()
	{
		shopPanel.SetActive (true);
		mainMenuPanel.SetActive (false);
	}

	public void ShowMenuPanel()
	{
		mainMenuPanel.SetActive (true);
		shopPanel.SetActive (false);
	}

}
				
			

Inventory.cs

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

public class Inventory : MonoBehaviour {

	// Munition
	private int ammo;
	// Dark Char
	private bool darkChar;

	// Use this for initialization
	void Start () 
	{
		DontDestroyOnLoad (gameObject);
		ammo = 0;
		darkChar = false;
	}

	public int GetAmmo()
	{
		return ammo;
	}

	public void ChangeAmmo(int number)
	{
		ammo = ammo + number;
	}

	public void ActivateDarkChar()
	{
		darkChar = true;
	}

	public bool GetDarkChar()
	{
		return darkChar;
	}
}
				
			

Hinweis: Du willst in der 3D-Entwicklung durchstarten? Dann teste jetzt nobreakpoints Pro. Dort lernst du in zahlreichen Online-Kursen und Workshops alle nötigen Skills.

Free

Trial

Keine Extra-Kosten.
Unverbindlich testen.

Bereit, deinen Weg in die 3D-Entwicklung zu starten?

Gefällt Dir der Artikel? Dann teile ihn doch, um diese Informationen auch anderen zugänglich zu machen!

Weitere Blogartikel

Bereit, deinen Weg in die 3D-Entwicklung zu starten?

Lerne in Rekordzeit alle nötigen Skills für Game Development, VR und AR – praxisnah und flexibel in deinem Tempo!

Suche

Bereit, deinen Weg in die 3D-Entwicklung zu starten?

Lerne in Rekordzeit alle nötigen Skills für Game Development, VR und AR – praxisnah und flexibel in deinem Tempo!