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! :)
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.
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!!!
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); } } }
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!
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?
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.
Thanks very much! Is there a way to make the dialog only appear when you interact with something, and have diffent dialogues depending on what you interacted?
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! ruclips.net/video/cLzG1HDcM4s/видео.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!
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?
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 :(
In the DialogueBox, where you attached the Dialogue Script, there should be a menu that says Lines. You can set how many lines you want and type in what you want them to say.
@@evannationarmy7769 so i put the th dialogue box on timeline and its on activation track but everytime it start it only show one character on the first line do you know how to 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.😭
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 :)
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?
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?
Sorry, i didnt notice the names before, but the Persona image is still misleading, the way you have it you cant separate the name from the rest of the text
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?
Any easy way to reset this when coming back for more dialogue? It works if I just set the index to 0 and change the dialogue lines, but it is blank at first and when it doesn't do the animation for the first line either.
@@BMoDev hello, the code worked fine, but when I press the left button of my mouse, the dialogue speeds up and my texts are not visible, it goes directly from 1 to 10.
Hey there I need a something like that , in terms of gradiated time to display the text, for my game's missions....I prefer to use SO for mission but in the begging of my game, a girl displayed the mission on the screen.
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!
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?
OMG THANKYOUUUUU
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.
yoo, how is the game going, still working on it? :)
Ahh yes. Got my 5 minute fix. The most useful tutorials on Unity.
Haha thanks! Appreciate ya
INCORRECT! THIS VIDEO IS 5:10 MINUTES LONG
@@PlagueDoctor856 🤓🤓🤓🤓
@@PlagueDoctor856 acktually 🤓🤓 the outro is 10 seconds long making the dialog system tutorial exactly 5 minutes
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!!!
Appreciate it!
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.
Supporting your return by watching the entire ad and this entire tutorial. I request a gourmet dialogue system tutorial with decision making please.
The real mvp 😭
I have literally 0 coding experience what so ever. This video was perfect. It was clear fast and easy to understand, thank you so much!
Exactly what I needed. These are the best I've been able to find. Looking forward to more videos soon 🙌
Thanks dude!
Thank you so much. Even though I watched a 30 minute tutorial, I couldn't' do it, but thanks to your 5 minute tutorial, I did it easily.
love to hear it
He’s alive!!!!! Glad to see you back man
Thanks man, will try to get back into a rhythm 😅
I love the way you break things down. Very easy to understand.
delayed answer, but thanks man I appreciate ya 🙏
Finally, you're back.
Great!
Keep them coming
ty
THANK YOU! Been struggling with this because I suck at coding but this helped a ton, def subbing.
Missed you, Bmo! Keep up the good work - I find your vids some of the easier tutorials to follow
😘
Thanks!
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.
chad
You are PERFECT
life saver you are
i love you dad
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!!!
You're epic
@@BMoDev :O
Yesss!!!!!!!!!!! Welcome back love your tuts
💗
I love this tutorial. Simple. Well explained. Short. It works. There's nothing else you can ask for. Good job m8!
honestly you deserve it. This video, the last one I saw, the one before it. Subscribed
This...
Simply short and sweet. SUBSCRIBED!
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!
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?
For some reason at 3:48 the text component doesn't show up for my Dialogue Script...
same
It didn't for me either but I could still drag the script from the icons to the component and it showed up in the inspector.
Thanks! This helped a lot. Something cool to add would be that sounds that play while someone's talking like Undertale.
Thank you man! Super detailed/concise tutorial 10/10.
Nice simple and fast! Lovely!
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.
Did you find out. Same problem lol
Have your player trigger the StartDialogue method when they press "x" button and is raycast hitting your dialogue character
I know it's been two years from this coment, but I'm in that problem right now. Did you know how to solve it?
@@gr29215 my reply is the solution.
Hey bro, how can I do this but with the new input system from unity, GetMouseButtonDown, doesn't exist anymore.
Brilliant work! Thanks so much for sharing and not wasting time. Love it. Subbed for more.
Thank you BMo for your awesome videos. This was a awesome exercise to follow!
one of the best tutorials, thanks brother
Thanks very much! Is there a way to make the dialog only appear when you interact with something, and have diffent dialogues depending on what you interacted?
Muito obrigada, em 5 minutos você ensinou mais que tutoriais extremamente longos :D
Might be a silly question (sorry!). How do I let the Dialogue system pop up on different occasions in one level?
This is so clear and useful!
Great video! Gonna use this for my NPCs.
man, thank you! this was exactly what i was searching for!
happy to hear it!
This is exactly what I needed, thank you so much!
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!
ruclips.net/video/cLzG1HDcM4s/видео.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?
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?
LMAO impressive!
5 minutes indeed. Great tutorial
Appreciate ya
Thank you so much! This was exactly what I was looking for.
Thanks for this short tutorial. 😊
You're welcome!
thank you, your tutorial is really helpful
Very useful tuto, thanks a lot
That's cool, but how do I link the dialogue to activate by talking to an Npc?
How can I made a dialogue with choices using this method?
Wonderful tutorial! Thanks!
If I wanted to use an input from my controller rather than left click the screen how would I do that though?
you change the if (Input.GetMouseButtonDown(0)) line to the input that you want
is there a way to make it pause for a small moment for stuff like commas or something like that?
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 :(
I am surprised it wasn’t one of those videos that has no talking and just coding at 3x
Ok, that's cool and all, but how did you make the actual different lines of dialogue? Where did you put them specifically?
In the DialogueBox, where you attached the Dialogue Script, there should be a menu that says Lines. You can set how many lines you want and type in what you want them to say.
@@evannationarmy7769 so i put the th dialogue box on timeline and its on activation track but everytime it start it only show one character on the first line do you know how to fix this??
@@timothy7411 Unfortunately, I do not. I would recommend asking a forum on what to do.
2 years old, still very useful!
Nice👍
After So long period?
Yes, finally :)
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.😭
this was just perfect for what I needed
The line 36 give me the error: IndexOutOfRangeException: Index was outside the bounds of the array. Please help me!
i dont know if its too late but in if statement of the NextLine() method you should set index < lines.Lenght - 1. hope it helps!
@@albireo_beta_cygni tried but it didn't fix it
Is there a way to make the dialogue play only once? Because it keeps playing every time I return to the scene
(I'm beginner) and if you got error:
cannot convert from 'System.Collections.IEnumerable' to 'string'
change "IEnumerable" with "IEnumerator"
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 :)
can someone tell me how do i put this dialogue.. like.. to "interact with npc"
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?
I subscribed in 5 minutes
👏Thats how its done
I have a problem where if I press the dialogue box again it is not working properly. it only shows one line
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?
Did you find out? Same issue here
Sorry, i didnt notice the names before, but the Persona image is still misleading, the way you have it you cant separate the name from the rest of the text
Thank you for this tutorial!
My text isn't appearing for some reason
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
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
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?
Thanks For this Great Tutorial Bro
bro this shri is broken i literally get an error after trying to do the click part of the code
Thank you very much!
Great video, thanks! definitely subbing :)
Any way to apply character-by-character typing sounds into this, like in Undertale?
Create AudioSource and then apply the typing sound to it
Just activate it every time a new character appears
sorry, i'm new. The dialog box works, but, where i can put the texts?
Any easy way to reset this when coming back for more dialogue? It works if I just set the index to 0 and change the dialogue lines, but it is blank at first and when it doesn't do the animation for the first line either.
hey u gotta do an if/else statement to say something like if talked to then (else) this action can happen
Thanks for helping me to make some task game programming
Is there a way so that certain elements aren't said in the dialogue box until the player reaches a certain point?
You're amazing...
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
This was effective.. thanks!
the red x in the corner was killing me man
Such a great video!!! Thank you!!!
Thanks
I expect from you a package solution for medium-sized projects like this in the video
Yeah, I don't know why but with my Visual studio basic and trying to use it, its not working
why my text will out of range of the size of dialogue box ?
Thanks! This helped me with Normal Kindergarten! Now Nabnab, Chef Chick, Hopping Bun, Etc, Can Now Say What I Wanted It To Say!
exactly what i neded
Happy to hear it!
@@BMoDev hello, the code worked fine, but when I press the left button of my mouse, the dialogue speeds up and my texts are not visible, it goes directly from 1 to 10.
Hey there I need a something like that , in terms of gradiated time to display the text, for my game's missions....I prefer to use SO for mission but in the begging of my game, a girl displayed the mission on the screen.
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!
And is it possible to add images in the background that transition with the dialogues?
Did you find a way?
thx you so much, great video
anyone else wish tutorials showed the entire code at least once at the end of the video?
Thank you!!
Fantastic - thanks!
Thank you kind sir!