- Home /
Activate/Deactivate UI Image using C#
Hey
New unity user, first time post. Im trying to make a simple UI chatbox conversation between my player and my cylindrical NPC. When my character enters the Child Collision Box, and presses the F key. My Dialogue (horribly spelt in code fare warning) box with text should open up, scroll through the following text lines, and close.
Everything but one tiny detail i cant seem to clamp is working. My Dialogue Box will not activate on its own. But the text continues to the next panel the way i want it to function, Then closes properly.
My Ui is set as such:
Canvas //checkmarked Script //checkmarked dBox //Unchecked text // text //
The scripts i'm using are:
public GameObject dBox;
public Text dText;
public bool dialougActive = false;
public string[] dialougLines;
public int currentLine;
void Start () {
}
// Update is called once per frame
void Update () {
if (dialougActive = true && Input.GetKeyDown(KeyCode.F))
{
//dBox.SetActive (true);
//dialougActive = true;
currentLine++;
}
if (currentLine >= dialougLines.Length)
{
dBox.SetActive (false);
dialougActive = false;
currentLine = 0;
}
dText.text = dialougLines [currentLine];
}
public void ShowDialoug ()
{
dialougActive = true;
dBox.SetActive (true);
}
}
Second Script:
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class Dialoug_holder : MonoBehaviour {
public string Dialoug;
private DialougToggle dMAN;
// Use this for initialization
void Start () {
dMAN = FindObjectOfType<DialougToggle> ();
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.name == "Player")
{
if (Input.GetKeyDown (KeyCode.F))
{
//dMAN.ShowBox (Dialoug);
if (!dMAN.dialougActive)
{
dMAN.dialougActive = true;
dMAN.currentLine = 0;
dMAN.ShowDialoug ();
}
}
}
}
}
I have the triggers on collision set up properly I have tried several different overhauls on the script, the original comes from "#29 make a 2D rpg" but was modified for 3D. The Original script did not work at all. But placing his bool conditions backwards has so far gotten the best results .
I have been over my script 100 times and been through the tutorials again trying his codes TO THE MICRO PIXEL!!! (new catch phrase) and those don't work. So here i am for my first time. Appreciate any help getting this forward, my teeth are getting sharp from ginding, cheers.
triedusing UnityEngine; using System.Collections; using UnityEngine.UI;
public class DialougToggle : $$anonymous$$onoBehaviour {
public GameObject dBox;
public Text dText;
public bool dialougActive = false;
public string[] dialougLines;
public int currentLine;
void Start () {
}
// Update is called once per frame
void Update () {
if (dialougActive = true && Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.F))
{
dBox.SetActive (true);
dialougActive = true;
currentLine++;
}
if (currentLine >= dialougLines.Length)
{
dBox.SetActive (false);
dialougActive = false;
currentLine = 0;
}
dText.text = dialougLines [currentLine];
}
public void ShowDialoug ()
{
dialougActive = true;
dBox.SetActive (true);
}
} just after posting and the box now goes through all phases properly but i can do it anywhere and replay the same conversation