Finally a dialogue that is basic with no bells and whistles that I can fully customize. Too many of the other tutorials on this added way more than I want for my small game.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class Dialogue : MonoBehaviour
{
public TextMeshProUGUI textComponent;
public string[] lines;
public float textSpeed;
private int index;
// Start is called before the first frame update
void Start()
{
textComponent.text = string.Empty;
StartDialogue();
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0))
{
if (textComponent.text == lines[index])
{
NextLine();
}
else
{
StopAllCoroutines();
textComponent.text = lines[index];
}
}
}
void StartDialogue()
{
index = 0;
StartCoroutine(TypeLine());
}
IEnumerator TypeLine()
{
foreach (char c in lines[index].ToCharArray())
{
textComponent.text += c;
yield return new WaitForSeconds(textSpeed);
}
}
void NextLine()
{
if (index < lines.Length - 1)
{
index++;
textComponent.text = string.Empty;
StartCoroutine(TypeLine());
}
else
{
gameObject.SetActive(false);
}
}
}
Thank you. I was following the video but for some reason it wasn't working. However, this did.
Most efficient Unity tutorial I've ever seen--and it makes perfect sense! You just made my day. And, my first subscribed channel ever. Thank you.
God thank you SO MUCH for including the complete on click function!!!! A lot of tutorials don't, and it really sucks as a player to be waiting and waiting for this shit to type itself out (especially if you read fast). Such a clean and clear cut tutorial!!! Thank you!!!
Exactly what I needed. These are the best I've been able to find. Looking forward to more videos soon 🙌
Supporting your return by watching the entire ad and this entire tutorial. I request a gourmet dialogue system tutorial with decision making please.
THANK YOU! Been struggling with this because I suck at coding but this helped a ton, def subbing.
This...
Simply short and sweet. SUBSCRIBED!
honestly you deserve it. This video, the last one I saw, the one before it. Subscribed
Thank you BMo for your awesome videos. This was a awesome exercise to follow!
Thank you man! Super detailed/concise tutorial 10/10.
Brilliant work! Thanks so much for sharing and not wasting time. Love it. Subbed for more.
Thank you so much! This was exactly what I was looking for.
This is exactly what I needed, thank you so much!
Nice simple and fast! Lovely!
Wonderful tutorial! Thanks!
this was just perfect for what I needed
Muito obrigada, em 5 minutos você ensinou mais que tutoriais extremamente longos :D
This is so clear and useful!
thank you, your tutorial is really helpful
one of the best tutorials, thanks brother
I love this tutorial. Simple. Well explained. Short. It works. There's nothing else you can ask for. Good job m8!
Thank you for this tutorial!
Great video! Gonna use this for my NPCs.
Thanks! This helped a lot. Something cool to add would be that sounds that play while someone's talking like Undertale.
Great video, thanks! definitely subbing :)
Thanks For this Great Tutorial Bro
Fantastic - thanks!
Thanks for helping me to make some task game programming
Is there anyway to add this to multiple game objects and have the dialogue system come up when the game object is interacted with in some way? I've tried so many tutorials and methods and have been stuck for days.
thx you so much, great video
OMG! I WAS TRYING OTHER TUTORIALS, AND THEY DIDN'T WORK FOR ME, BUT THEN I COME HERE AND IT WORKS FIRST TRY!!! This is EPIC!!!
This was effective.. thanks!
Question. How would I be able to mix this with a multiple choice dialogue system?. Like, say my player would have a voice line, then naturally the npc would respond, but only once and the conversation is done.
So what I mean is, how can i transition between both?
Thanks really helpful and less time !!!!
awesome! just the thing i need! :3
Thank you!!
Thank you kind sir!
2 years old, still very useful!
Awesome thank you :D
Hey bro, how can I do this but with the new input system from unity, GetMouseButtonDown, doesn't exist anymore.
Really good :)
Jesus, why is it so hard to do something like what u did? Other videos take up 20-30 minutes of my life with extra stuff that's unnecessary but if I don't add the code will break. Thanks a lot!
Absolutely love this video!!! Helped a lot, but I have a question. If I wanted to make multiple instances of waiting function for some reason code doesnt execute them at all. If I have multiple IEnumerators nor If I have If function in one IEnumerator, there it will only execute the original and if I change the text appearance to that another if statement it will completely skip any dialogue at all (my main reason of doing this if because the character not always speaks at same speed e.g. if he is surprised he will swallow some of his words or in cutscener or non-interactable dialogue which will appear and dissapear of its own). Thank you if you are willing to help me!
Thank You.
this is very good good but with all the zooming around I wish I could see more of the Unity window to see other values while working at my own pace
Excellent
Is there a way so that certain elements aren't said in the dialogue box until the player reaches a certain point?
And is it possible to add images in the background that transition with the dialogues?
now i am in a good mood
Top notch vid bloke
is there a way to make it pause for a small moment for stuff like commas or something like that?
Question: How would I go about making new dialogue appear whenever my player returns to the same scene instead of it just repeating same stuff every time the scene is loaded?
Hi @BMo! Is there some kind of way that one could add some kind of trigger collider on something like a sign or NPC and have the character hit a button like the space key in order to start the dialogue instead of having it start at the beginning of the game? I have tried some things myself but I just can't figure this one out. Thanks!
Yeah 100%, you just need that trigger to execute the StartDialogue method. I have an "Interaction" tutorial, you can use the principals in that to call the StartDialogue Method!
ua-cam.com/video/cLzG1HDcM4s/v-deo.html
@@BMoDev Ok! Thank you very much! I was also wondering (sorry I have so many questions. I should probably just get better at code on my own.) if there was some kind of way to implement a response, and have the dialogue loop back to the beginning every time you play it. Thanks! I have been following a bunch of your 2D tutorials and am learning a lot about making games!
@@madpenguin58 Hello, I would like to ask how did you get it to work with the Interact system?
How do you give control back to the main game after dialogue ends? I'm having difficulties wording what I mean but after the dialogue runs using this method, I want to then get objects to show or be able to click on buttons but I don't want to add that code directly in the Dialog Manager as it'd make it messy and not specific to the dialog but I don't know how else to do it?
this the good stuff
gracias, sos un capo, excelente tutorial 10/10
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class Dialogue1 : MonoBehaviour
{
public TextMeshProUGUI textComponent;
public string[] lines;
public float textSpeed;
private int index;
// Start is called before the first frame update
void Start()
{
textComponent.text = string.Empty;
StartDialogue();
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0))
{
if (textComponent.text == lines[index])
{
NextLine();
}
else
{
StopAllCoroutines();
textComponent.text = lines[index];
}
}
}
void StartDialogue()
{
index = 0;
StartCoroutine(TypeLine());
}
IEnumerator TypeLine()
{
foreach (char c in lines[index].ToCharArray())
{
textComponent.text += c;
yield return new WaitForSeconds(textSpeed);
}
}
void NextLine()
{
if (index < lines.Length - 1)
{
index++;
textComponent.text = string.Empty;
StartCoroutine(TypeLine());
}
else
{
gameObject.SetActive(false);
}
}
}
thank you
hey.thanks for the great video.any ways i could use this twice? for example.i have a nurse charecter.first she starts the dialogue.then after she finished i would like to use this method once again on my player charecter and (for example answer the nurse).i would really apreciate if you answer.
the red x in the corner was killing me man
ngl i got a really odd error when goin though his steps, its displaying 0 which i suspect is the index then flashes each character after the number. ive double checked my code to his but i dont understand wondering if someone might of had the same issue?
Thanks
Anybody know why am I getting "Object reference not set to an instance of an object Dialogue.Update() (at Assests/Dialogue.cs:26"?
It's for a college project :(
thanks a lot
Thank uuu
good stuff
Hello I was wondering if you could help me I would like to know how to stop the text from showing up when the game starts. I would highly appreciate it if you could give me some advice :)
how do i keep the the text from moving when i have it's alighnment centered?
I am surprised it wasn’t one of those videos that has no talking and just coding at 3x
I expect from you a package solution for medium-sized projects like this in the video
ty so mch
This is actually perfect for silent protagonists who isn't expected to respond to NPCs
hi how do i move to another scene whenever there is no more dialogue?..can you help ?
i try to put this on timeline but the firs line only showing one character how do i fix this??
Hi! im following this tutorial but i dont have "text component" and "lines" under my dialogue script, so i cant drag the text into the component. how do i fix this? i need help for my university project.😭
How can I made a dialogue with choices using this method?
great video! but does anyone know how to have different lines of text for two separate NPCs? my brain is fried and idk how to pull it off
Hi, I have attached this to 2 different gameObjects and have given them unique strings. I noticde that they share the index[lines] variable, so when I interact with 1 object, I can't move to the next line because the script reads both index[lines], anyone knows how to fix that?
If i have only 1 element or text, it is not showing if i try to make the dialogue box appear again for the second time
can someone tell me how do i put this dialogue.. like.. to "interact with npc"
thanks:)))
Thanks! This helped me with Normal Kindergarten! Now Nabnab, Chef Chick, Hopping Bun, Etc, Can Now Say What I Wanted It To Say!
That's cool, but how do I link the dialogue to activate by talking to an Npc?
Could you explain the NextLine() logic?
For those who are confused as to where to put your text. When you go to the DialogueBox’s inspector, underneath the Dialogue script tab, there’s another tab called ‘Lines’. That’s where you add it! :)
nice
Hm weird, I cannot find it
nvm just found it!
I can put this script anywhere and then call it when I press "e" lets say, right?