Jump to content
Unity Insider Forum

Handelssystem


Recommended Posts

hallo,

ich würde gerne ein Handelssystem für mein Weltraumspiel machen.

Wenn mann in der nähe von einen Planeten ist soll menn einen Butten drücken und der Bildschirm soll sich öffnen.

Habe das ganze schon einemal mit 3D Gamestudio gemacht, war einfach recht einfach.

 

Nur bei Unity habe ich das ganze noch nicht verstanden.

Wie öffne und schliesse ich so ein Panel?

Ein Steuerungs Panel habe ich schon, das ist immer da.

Das ganze soll dann so sein wie bei Port Royal

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich würde das auch mit mehreren Canvas lösen unter denen die jeweilige GUI-Elemente sind, wie Du ja schon selbst erkannt hast.

die gameobjects initialisiert man schon mal in Start oder Awake

goSpaceCanvas = GameObject.Find ("SpaceCanvas");
goTradeCanvas = GameObject.Find ("TradeCanvas");

 

man kann pro Gameobject-canvas eigene methoden erstellen

static public void SetSpaceCanvas(bool active){
 goSpaceCanvas.SetActive (active);
}

static public void SetTradeCanvas(bool active){
 goTradeCanvas.SetActive (active);
}

 

und in dem Button kannst Du das Weltraum-canvas false setzen und das Handels-canvas true, ist es das was Du meinst??

Link zu diesem Kommentar
Auf anderen Seiten teilen

Kannst du mir bitte erklären wie das genau geht? ich sitze da bestimmt schon 12 Stunden drann.

ich habe 2 Canvas, beide habe ich umbenannt. einen in Steuern und den anderen in Handeln mit dem Panel Planet.

Das script habe ich auf die Cam gelegt.

Im Editor habe ich Handeln Deactiviert.

Eine Pausenfunction habe ich eingebaut und in der Pause soll das eine Panel aus und das andere eingeschaltet werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

da kann ich nur raten ich kenne das prog ja nicht, also wenn Du ein Canvas im Inspector disabled hast, kann es sein, dass

das gameobject nicht initialisiert wird, wenn Du alles auf Fehler prüfst zB mit Debug.Log (wird ins console-Fenster ausgegeben Window->Console). Wenn es daran liegt solltest Du den Canvas erst im Programm nach der Initialisierung disablen.

goSpaceCanvas = GameObject.Find ("SpaceCanvas");
if(goSpaceCanvas==null)Debug.Log("SpaceCanvas not found.");
usw

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nochmal Danke, aber ich verstehe nicht wie es gehen soll.

Ich weis nicht wo das Script hin soll. Ob ich die Canvas umbenennen darf. habe mir schon ein Wolf gesucht und alles was ich gefunden hat klappt nicht.

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


public class Planet : MonoBehaviour {
private bool isPause = false;
// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
 if (Input.GetKeyDown (KeyCode.L))
  ToggleTimeScale ();

}

 void ToggleTimeScale()
 {
 if (!isPause)
  {
  Time.timeScale = 0;
  }
  else
  {
  Time.timeScale = 1;
  }
  isPause = !isPause;
 }

}

 

Das habe ich jetzt und alles was ich versucht habe geht nicht.

 

Im Editor schaut es so aus:

Canvas

->Steuern

->Planet

 

 

Es soll jetzt beim Starten Steuern ein und Planet aus sein.

 

 

Wie geht das? und wo muß das Script hin damit es geht.

Bitte mit erklärung.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich würde von GameObject.Find abraten. Wozu gibt es denn den schönen Inspektor in dem man Referenzen setzen kann?

 

public GameObject canvas;

public void ToggleCanvasMenu()
{
  canvas.SetActive(!canvas.activeSelf);
  Time.timeScale = Time.timeScale == 1 ? 0 : 1;
}

private void Update()
{
  if (Input.GetKeyDown(Keys.L))
  ToggleCanvasMenu();
}

 

Jetzt ist der Name des Objektes egal und du kannst das Canvas dass du benutzen möchtest im Inspektor des Scriptes setzen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...