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