Salve, volevo sapere se qualcuno poteva aiutarmi con gli script del mio sistema di dialoghi per un gioco in unity 2d
il sistema per ora si divide in due comandi:
1) dialoguemanager (assegnato a un oggetto (chiamato allo stesso modo)figlio di una canvas e con figli un box e un testo)
questo è come appare nell' inspector
e questo è il codice :
2)il dialogHolder(assegnato a un oggetto (dialoguezone) figlio di un oggetto con cui "parlare")
cosi è come appare lo script nell' inspector
e questo è il codice:
il mio problema è che dopo aver interagito con un oggetto 1 nel gioco e aver portato l' int Ndialog a 2, interagendo con un oggetto2 della scena,anche se è la prima volta, mi viene dato come dialogo il dialogue 2 di quell' oggetto,e non dialogue 1, poiche Ndialog è diventato 2 interagendo con il primo oggetto. mi servirebbe uno script che riporti Ndialog a 1 quando si interagisce con un altro oggetto della scena.qualcuno saprebbe darmi una mano?
grazie
il sistema per ora si divide in due comandi:
1) dialoguemanager (assegnato a un oggetto (chiamato allo stesso modo)figlio di una canvas e con figli un box e un testo)
questo è come appare nell' inspector
e questo è il codice :
Codice:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class DialogueManager : MonoBehaviour {
public GameObject dBox;
public Text dText;
public bool dialogActive;
public int Ndialog = 1;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (dialogActive && Input.GetKeyDown(KeyCode.Z))
{
dBox.SetActive(false);
dialogActive = false;
}
}
public void ShowBox(string dialogue , string dialogue2)
{
dialogActive = true;
dBox.SetActive(true);
if(Ndialog == 1)
{ dText.text = dialogue;
Ndialog++;
}
else if (Ndialog == 2)
{ dText.text = dialogue2;
}
}
}
2)il dialogHolder(assegnato a un oggetto (dialoguezone) figlio di un oggetto con cui "parlare")
cosi è come appare lo script nell' inspector
e questo è il codice:
Codice:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class dialogHolder : MonoBehaviour {
public string dialogue;
public string dialogue2;
private DialogueManager dMan;
// Use this for initialization
void Start () {
dMan = FindObjectOfType<DialogueManager>();
}
// Update is called once per frame
void Update () {
}
void OnTriggerStay2D(Collider2D other)
{
if(other.gameObject.name == "Player")
{
if(Input.GetKeyUp(KeyCode.Z))
{
dMan.ShowBox(dialogue,dialogue2);
}
}
}
}
il mio problema è che dopo aver interagito con un oggetto 1 nel gioco e aver portato l' int Ndialog a 2, interagendo con un oggetto2 della scena,anche se è la prima volta, mi viene dato come dialogo il dialogue 2 di quell' oggetto,e non dialogue 1, poiche Ndialog è diventato 2 interagendo con il primo oggetto. mi servirebbe uno script che riporti Ndialog a 1 quando si interagisce con un altro oggetto della scena.qualcuno saprebbe darmi una mano?
grazie