This is exactly what I was looking for. Thank you for the tutorial!
@RestfulCoder4 жыл бұрын
I'm glad I could help. Thanks for watching.
@choigohoon60313 жыл бұрын
It was extremely hard for me to go back and forth to see each and every part of the scene to match with what you have. And some parts of the codings and objects were unexplained, which would actually not make the game function properly. You might have thought that they are not that important so you skipped them, but actually I think they were pretty fatal. So next time I suggest you to spend more time on explaining the process step by step. The content itself was good.
@RestfulCoder3 жыл бұрын
Thanks. Next time I'll share all the source code.
@vahrkalla42015 жыл бұрын
Hey mate! I just wanted to say thank you so much for making this, I'm pretty sure it's just what I need! You are helping young developers all over the world :)
@RestfulCoder5 жыл бұрын
I'm glad it's helping. Let me know if there are specific topics you'd be interested in hearing more about.
@midnightz86613 жыл бұрын
Thanks for the tutorial, but seems the code on SpeakerUI and DialogDisplay not completed, mind share the codes? Thanks in advance
@RestfulCoder2 жыл бұрын
using UnityEngine; using UnityEngine.UI; public class SpeakerUIController : MonoBehaviour { public Image portrait; public Text fullName; public Text dialog; private Character speaker; public Character Speaker { get { return speaker; } set { speaker = value; portrait.sprite = speaker.portrait; fullName.text = speaker.fullName; } } public string Dialog { get { return dialog.text; } set { dialog.text = value; } } public bool HasSpeaker() { return speaker != null; } public bool SpeakerIs(Character character) { return speaker == character; } public void Show() { gameObject.SetActive(true); } public void Hide() { gameObject.SetActive(false); } }
@primehyace6473 Жыл бұрын
Thank you mate, I need this
@deano424 жыл бұрын
David, I just finished viewing this video, and I then gutted my dialog system to recreate it using Scriptable Objects (or as I like to call them … ScrObs). Excellent, thought provoking work. I thank you for helping me to see how to do it this way. Using ScrObs enabled me to add random gibberish voices, various portraits for different emotions, and I even made the head bob to simulate speaking, though that's just a rotation thing and not ScrObbish at all. This method makes it so easy to add voices and portraits to each character, and again I thank you for your time and energy. Please continue to do what you do. Cheers.
@RestfulCoder4 жыл бұрын
This made my day! I'm really hoping to get into more in depth design videos using SO. The talk which I linked in the description was the major inspiration. I'd tried keeping my logic and data totally independent from Unity at first and struggled to find a good boundary for when to lean on Unity. SOs really helped me find the balance.
@abdullahamjad36124 жыл бұрын
SOOOO simple and efficent.........MAN on man i thought i could never do this but you saved the day thank you man really thank you
@RestfulCoder4 жыл бұрын
Thanks! Nice avatar.
@heybishop5 жыл бұрын
I've found this very helpful! Thank you. I'm about to start building my first dialogue system, and I knew I wanted to be able to group together different types of data. Not only will I have text on screen, but I also want an audio recording to play. Structs are the answer!
@RestfulCoder5 жыл бұрын
HeyBishop, thanks! I have a couple more related videos that you may want to watch, including one called Unity Dialog Choices.
@heybishop5 жыл бұрын
@@RestfulCoder It's next in my queue!
@IAMMAT874 жыл бұрын
How about a shop system with the choice menu. Would be golden
@NSxJohnZ4 жыл бұрын
Hey there, quick question to ask, I followed your video and I came across an error when I play the scene. NullReferenceException: Object reference not set to an instance of an object SpeakerUI.set_Speaker (Character value) (at Assets/Conversation/Scripts/SpeakerUI.cs:22) DialogDisplay.Start () (at Assets/Conversation/Scripts/DialogDisplay.cs:38) When I opened up the script, the highlighted codes that had caused this error was in the in the SpeakerUI, portrait.sprite = speaker.portrait; in the DialogDisplay, speakerUIRight.Speaker = conversation.speakerRight; May i know what is the reason? thank you
@RestfulCoder2 жыл бұрын
I think that's just updating the picture/portrait and the speaker info based on the current conversation. It sounds like it's starting with a null value (unset) for some reason. Maybe speak and .speakerRight are null?
@strawberrymushie74384 жыл бұрын
hii thank you so much for this video it helped me so much with my game! Although Im having a few problems and I think its because I might be missing some code.. Can you help me with the code thats at the end of both the dialogdisplay script and the speakerUI script? thanks in advance!
@RestfulCoder2 жыл бұрын
Please check the comments, I've shared the code in question on many recent comments. Apologies for the inconvenience.
@strawberrymushie74382 жыл бұрын
@@RestfulCoder thank you💗 sorry for troubling you 😄🌸🌸
@icomputo2 жыл бұрын
Hello, how would it be multilanguage?
@RestfulCoder2 жыл бұрын
Look up internationalization or i18n. Usually you make a language file for each language and assign each line a key. Then when outputting dialogue you look up a value for the line's key in the active language file.
@qtate784 жыл бұрын
Hey David I managed to fix a small error with the way I had my panel set-up, the only issue I have left is when the dialog sequence starts they won't toggle off the right will stay on and then I hit the spacebar and the left pops up while the right stays active and as I continue to hit the spacebar the diolog flows, but they both remain active. Could you let me know what minor mistake I'm doing please :D
@yasene4 жыл бұрын
Hey was just checking this guide in the display dialog script you should at the end call inactivespeakerui.hide () hope this helps
@RestfulCoder2 жыл бұрын
yasene's reply looks correct to me.
@CraftyMaelyss4 жыл бұрын
Thank you for the tutorial, but you didn't show how to actually initialize the Dialog Display, so would you explain how to activate this and what sort of trigger and additional code is needed? edit: This caused Unity to crash.
@Keemin4 жыл бұрын
might wanna take a look at the brackeys tutorial on how to make a dialogue system and just replace his queue based system with this scriptable object system
@aikou28864 жыл бұрын
@@Keemin I got a question, wouldn't this make localization more difficult? l'm still learning but apparently saving every piece of text to a string make localization considerably easier.
@Keemin4 жыл бұрын
@@aikou2886 yes, it would. but using scriptable objects gives more functionality, as you can't have all of the information in the scriptable objects in this video contained in just a string. it all comes down to what functionality you need
@RestfulCoder2 жыл бұрын
Apologies, I haven't been in this project for some time and don't remember how it was initially triggered. I think I set it up to open or show the UI when I hit space bar.
@cosminblaga64194 жыл бұрын
Thank you for the tutorial. It helped me build my own system with things taken from this and from another tutorial.
@RestfulCoder4 жыл бұрын
Great! I'm glad that it worked for you. Scriptable Objects make this really nice, much nicer than a general content loading solution I'd previously built.
@franst39094 жыл бұрын
Hello~ I recently got my dialogue system done. It's different from what you have of course, (my speakerUI is on the same script as the dialogue manager (? Idk what to call it) plus I managed to get animated text and expression) Your explanation on scriptable objects really helped me understand the concepts. Thank you!
@toxiconflict4 жыл бұрын
Also, I noticed both speakers stay active when I want one of them to be inactive while the other speaks? Any idea what's wrong there?
@toxiconflict4 жыл бұрын
nevermind, I added inactiveSpeakerUI.Hide(); to the setdialog function. It didn't show it in the video though.
@RestfulCoder2 жыл бұрын
Good catch. Next time around I'm just going to share the entire project. By the time this video got some traction the code had problems with the latest version of Unity.
@Kkyo_Raps4 жыл бұрын
can i have your codes plaese? i can't see half of them in video
@RestfulCoder4 жыл бұрын
If you search the replies to Matt Burgess and Mayvan I shared a good chunk of the code.
@raudafitriani96504 жыл бұрын
@@RestfulCoder Hi David, I checked the replies and there isn't any. Can you help? Because you've not fully shown the script like SpeakerUI. Thanks!
@merykk.27013 жыл бұрын
@@raudafitriani9650 Same! idk what i have to code there
@naayif90344 жыл бұрын
Thank you for this. Been looking for a long time. Appreciate you taking the effort to do this tutorial.
@fadheljunionandhitautama70424 жыл бұрын
please make a full tutorial from 0 :(
@RestfulCoder2 жыл бұрын
Apologies! Thanks for the feedback, next tutorial will include everything and code.
@sophieellis1703 жыл бұрын
Hey, can I ask what is in the SpeakerUIController class? :)
@RestfulCoder2 жыл бұрын
using UnityEngine; using UnityEngine.UI; public class SpeakerUIController : MonoBehaviour { public Image portrait; public Text fullName; public Text dialog; private Character speaker; public Character Speaker { get { return speaker; } set { speaker = value; portrait.sprite = speaker.portrait; fullName.text = speaker.fullName; } } public string Dialog { get { return dialog.text; } set { dialog.text = value; } } public bool HasSpeaker() { return speaker != null; } public bool SpeakerIs(Character character) { return speaker == character; } public void Show() { gameObject.SetActive(true); } public void Hide() { gameObject.SetActive(false); } }
@IAMMAT873 жыл бұрын
I tried this in my build and its just saying line 1, line 2.. It works fine in editor. it says in build debug, did you #ifdef unity editor a section of your serialized public struct, Null Reference Exception. it displays the portraits, but not loading up the conversations.
@RestfulCoder2 жыл бұрын
I'm unsure. This may be an incompatibility with recent versions of Unity as I didn't see this when I made the video 2+ years ago.
@IroquoisPliskin862 жыл бұрын
Wow, this is infinitely easier than trying to get Unity to work with xml.
@raggedstorm57993 жыл бұрын
I looked through all the videos of this dialogue series, but notice you don't really explain a lot of the basics and skip over showing all of a code (in this video, the SpeakerUI and DialogDisplay). Which is fine if your target audience isn't for a beginner, but could you please share the source code or a link to the file that I may view for reference?
@RestfulCoder2 жыл бұрын
using UnityEngine; using UnityEngine.UI; public class SpeakerUIController : MonoBehaviour { public Image portrait; public Text fullName; public Text dialog; private Character speaker; public Character Speaker { get { return speaker; } set { speaker = value; portrait.sprite = speaker.portrait; fullName.text = speaker.fullName; } } public string Dialog { get { return dialog.text; } set { dialog.text = value; } } public bool HasSpeaker() { return speaker != null; } public bool SpeakerIs(Character character) { return speaker == character; } public void Show() { gameObject.SetActive(true); } public void Hide() { gameObject.SetActive(false); } }
@Megahertzs3 жыл бұрын
I know this is over a year old, but I found this really helpful! AND, I managed to get it to work with Bolt Visual Scripting! (Took me almost all day though...)
@RestfulCoder3 жыл бұрын
Great! Scriptable Objects are a great tool.
@kmud77503 жыл бұрын
Really cool system, love scriptable objects so this was awesome. Thanks for this!
@IAMMAT873 жыл бұрын
Completed this in 2 hours thank you, i made some personal changes. Have you reconsidered a shop tutorial ?
@RestfulCoder3 жыл бұрын
I have an Skyrimesque inventory series which should have a lot of overlap with a shop UI.
@kurooda90703 жыл бұрын
Hello! I have a few questions if you don't mind. First is at 7:31 where you can set a submenu, how can I make it so that there are more than 1 submenu? Something like "Conversation/Intro, conversation"? The other question of mine, is: I have a public string[] sentences; and a private int index; within the class, and I wish to use them within the struct if possible. Is it possible, and if yes, then how? (In a way that when Conversation class Line[] lines is called it will still work.) This second question might be hard/impossible, but I hope it can work, and if not, then I would like to discuss why I want it like this in private if you don't mind.
@RestfulCoder3 жыл бұрын
You could make an array of menus, track which is active, and stack them visually. I'd start by moving the existing menu into an array of 1 item and making that work completely then add a second.
@kurooda90703 жыл бұрын
@@RestfulCoder Thank you for the answer! I'd like to note though, that I'm not good at unity, and neither at programming, so I can't really picture it, but I'll try to make sense of what you said. So I might be back with more questions haha. But thank you again! ^^
@silvertategamiplays4 жыл бұрын
Hiya, I'm trying to make a code similar to this except it doesn't hide the other character because I plan on having multiple onscreen at once and the only error I'm having now is with the SetDialogue portion. It says I don't have an argument for the formal parameter of text on DialogueDisplay. I don't know if it's because of the bottom of the code of DialogueDisplay script or not
@RestfulCoder2 жыл бұрын
I'm not sure, but here's the full SpeakerUIController script: using UnityEngine; using UnityEngine.UI; public class SpeakerUIController : MonoBehaviour { public Image portrait; public Text fullName; public Text dialog; private Character speaker; public Character Speaker { get { return speaker; } set { speaker = value; portrait.sprite = speaker.portrait; fullName.text = speaker.fullName; } } public string Dialog { get { return dialog.text; } set { dialog.text = value; } } public bool HasSpeaker() { return speaker != null; } public bool SpeakerIs(Character character) { return speaker == character; } public void Show() { gameObject.SetActive(true); } public void Hide() { gameObject.SetActive(false); } } and here's the conversation controller: using UnityEngine; using UnityEditor; using UnityEngine.Events; using System.Collections; [System.Serializable] public class QuestionEvent : UnityEvent {} public class ConversationController : MonoBehaviour { public Conversation conversation; public QuestionEvent questionEvent; public GameObject speakerLeft; public GameObject speakerRight; private SpeakerUIController speakerUILeft; private SpeakerUIController speakerUIRight; private int activeLineIndex; private bool conversationStarted = false; public void ChangeConversation(Conversation nextConversation) { conversationStarted = false; conversation = nextConversation; AdvanceLine(); } private void Start() { speakerUILeft = speakerLeft.GetComponent(); speakerUIRight = speakerRight.GetComponent(); } private void Update() { if (Input.GetKeyDown("space")) AdvanceLine(); else if (Input.GetKeyDown("x")) EndConversation(); } private void EndConversation() { conversation = null; conversationStarted = false; speakerUILeft.Hide(); speakerUIRight.Hide(); } private void Initialize() { conversationStarted = true; activeLineIndex = 0; speakerUILeft.Speaker = conversation.speakerLeft; speakerUIRight.Speaker = conversation.speakerRight; } private void AdvanceLine() { if (conversation == null) return; if (!conversationStarted) Initialize(); if (activeLineIndex < conversation.lines.Length) DisplayLine(); else AdvanceConversation(); } private void DisplayLine() { Line line = conversation.lines[activeLineIndex]; Character character = line.character; if (speakerUILeft.SpeakerIs(character)) { SetDialog(speakerUILeft, speakerUIRight, line.text); } else { SetDialog(speakerUIRight, speakerUILeft, line.text); } activeLineIndex += 1; } private void AdvanceConversation() { // These are really three types of dialog tree node // and should be three different objects with a standard interface if (conversation.question != null) questionEvent.Invoke(conversation.question); else if (conversation.nextConversation != null) ChangeConversation(conversation.nextConversation); else EndConversation(); } private void SetDialog( SpeakerUIController activeSpeakerUI, SpeakerUIController inactiveSpeakerUI, string text ) { activeSpeakerUI.Show(); inactiveSpeakerUI.Hide(); activeSpeakerUI.Dialog = ""; StopAllCoroutines(); StartCoroutine(EffectTypewriter(text, activeSpeakerUI)); } private IEnumerator EffectTypewriter(string text, SpeakerUIController controller) { foreach(char character in text.ToCharArray()) { controller.Dialog += character; // yield return new WaitForSeconds(0.1f); yield return null; } } }
@eiyu17765 жыл бұрын
Hi, do you have the code files downloadable as not completely shown in video. Very helpful video thanks!
@RestfulCoder5 жыл бұрын
I haven't yet shared them, but I may. If you're interested, I've taken this further in another video, adding dialogue choices: kzbin.info/www/bejne/j3uvlJSkfch9rtE.
@eiyu17765 жыл бұрын
@@RestfulCoder Thanks for the reply! I figured it out from how you were describing the classes :) i also extended this myself, not to do decision based choices, but to allow more than left and right speaker! This video was a great insight on how to approach the problem! Also checked your link and you link back to this video, dialogue choices is actually here: kzbin.info/www/bejne/jXi6ppWmr99lptk Will watch the video however! thanks!
@RestfulCoder5 жыл бұрын
@@eiyu1776 Great! Did you move the Left/Right position to be part of the conversation's lines' information? Just curious what approach you took.
@eiyu17765 жыл бұрын
@@RestfulCoder pretty much. made an enum to easily add more positions (currently have left, middle and right, all along bottom), same name and dialogue text canvas items, only potrait location is different. But the position enum is in the lines struct. no longer have left right speaker etc, have a single speaker that is calculated from the character set int the conversation(per line) to allow more than 2 characters.... dunno if thats clear enough
@KarosuMaker5 жыл бұрын
Excellent! Thanks!
@elapplzsl3 жыл бұрын
Great tutorial thanks mate, you saved me a ton of time. I was thinking we need to fiddle with json and what not to get a simple dialog conversation going in unity.
@AssassinateThisEzio4 жыл бұрын
I would like to know how to set this up properly to trigger when I click on an NPC object. I want to say I need to call the SetDialog method from the DialogDisplay in the NPC trigger event I have set up but I keep getting an error due to protection level (CS0122). Any help would be appreciated thanks!
@RestfulCoder4 жыл бұрын
There are a few ways to do it. The easiest is to get a reference to the conversation game object, get the conversation script, and call ChangeConversation with the desired conversation. Another would be to set up an event for changing the conversation that could be fired when the NPC is selected. The ConversationController would need to listen for that event and respond to it.
@devy14513 жыл бұрын
Hi, thanks for video, i need your help, Implemented this system,I need to have response options and I want events to occur in the game depending on the answer I gave.
@RestfulCoder2 жыл бұрын
You should be able to hook something into the code that processes the selected choice.
@devy14512 жыл бұрын
@@RestfulCoder oh, thanks, I was looking for it for 9 months and could not find a solution
@fatmarajab1144 жыл бұрын
This is a great tutorial!! Really helped me out in my game. But i had one question.... could you please explain how to change expressions of the sprites during dialogue? I'm still new to unity and haven't managed to figure it out. Any assistance will be appreciated. Thanks in advance.
@RestfulCoder4 жыл бұрын
Thanks. You could easily add expression state to both the characters and each line of dialog. On the character, you could have a different image for each. As you process the dialogue you could use the dialog expression value to set the character's state.
@fatmarajab1144 жыл бұрын
@@RestfulCoder Thanks for the response... I'll give it a try
@vickymarquezhdz3 жыл бұрын
@@RestfulCoder Hii, your videos have been the most helpful for what I'm trying to do right now, the only thing that I have left is the changing expressions states through dialogue. I know you kinda explained it in @Fatma Rajab 's comment, but I'm still lost on where to put and write certain things, so I would really be happy if you could make a tiny tutorial with the change expressions feature, it would really mean a lot, I've been struggling with dialogue system for a long time till now, I just need the expressions thing and that'd be it. Pretty please with a cherry on top and thank you...
@unit12855 жыл бұрын
Awesome tutorial! Thank you for this vedio :)
@bigemil98174 жыл бұрын
yo dude why dont you give us the scripts i tried to copy them but you change the script
@RestfulCoder2 жыл бұрын
Thanks for the feedback. I'll do this with my next videos.
@beardordie53085 жыл бұрын
I attempted something very much like this not long ago and was using a ScriptableObject for each line, which as you pointed out doesn't show up nicely like your struct does. Because of that, it got annoying to work with in the inspector. I think I'll take another look at it using serializable structs for lines instead. My concern is that in my system, dialogue has choices, plus I was using specific lines to optionally trigger GameEvents (also ScriptableObjects) that can be listened to from outside the system to trigger in-game behavior based on the lines the player chose to say. As you might imagine, the complexity became a tad burdensome.
@RestfulCoder5 жыл бұрын
I'm looking forward to tackling that challenge. My next video will be for adding choices, and possibly stringing to together conversations and choices.
@toxiconflict4 жыл бұрын
great video, just wondering. Whats a good way to trigger the dialogue to start off of say an NPC or item? What would I attach to them to start this whole routine?
@toxiconflict4 жыл бұрын
OK I actually figured this out on my own kinda. But what I would love to know is how do I assign specific conversations to each character or item.
@RestfulCoder2 жыл бұрын
I haven't tried this but I think you could just have a default conversation on people or items, that gets sent to the dialogue system.
@yaboijagerlive79234 жыл бұрын
thanks a lot this is super helpful
@paulamenz42324 жыл бұрын
Hi! Thank you very much for this tutorial. I'm new in Unity and I really need to add some dialog to a project, so I wanted to use this idea, but I keep getting this error and at this point I just want to cry. I'm not sure if I'm missing some code. Please help! error CS1061: 'Line[]' does not contain a definition for 'Lenght' and no accessible extension method 'Lenght' accepting a first argument of type 'Line[]' could be found (are you missing a using directive or an assembly reference?)
@RestfulCoder4 жыл бұрын
Line[] is a list of lines with a Length property. It looks like you just have a typo: Lenght should be Length.
@paulamenz42324 жыл бұрын
@@RestfulCoder omg the day C# works in spanish I'll be so happy. Thank you very much! XD
@RestfulCoder4 жыл бұрын
@@paulamenz4232 ¡De nada!
@zurahlamin3604 жыл бұрын
can you show full coding speaker ui
@RestfulCoder2 жыл бұрын
using UnityEngine; using UnityEngine.UI; public class SpeakerUIController : MonoBehaviour { public Image portrait; public Text fullName; public Text dialog; private Character speaker; public Character Speaker { get { return speaker; } set { speaker = value; portrait.sprite = speaker.portrait; fullName.text = speaker.fullName; } } public string Dialog { get { return dialog.text; } set { dialog.text = value; } } public bool HasSpeaker() { return speaker != null; } public bool SpeakerIs(Character character) { return speaker == character; } public void Show() { gameObject.SetActive(true); } public void Hide() { gameObject.SetActive(false); } }
@urielvaldez83503 жыл бұрын
I really thank you for your tutorial on this, I can implement this as like a cut scene conversation it is a big bonus to have that tutorial thank you so much!
@urielvaldez83503 жыл бұрын
I do have one question sorry, if I wanted to use this dialogue is there a way to use this to multiple npcs like talk to npc thats their own conversation and then another thats another convo etc. Would I need different canvas or put em in the same one? Thank you again for this awesome tutorial.
@urielvaldez83503 жыл бұрын
Anyone wondering about this I did found out that have multiple ones it is a matter setting a certain conversation on and off and yes you can have multiple canvases inside a canvas. I Saw in a youtube video from 2017 Unity seminar that it can be recommended to use multiple canvases for good optimization for your game :)
@Megahertzs3 жыл бұрын
Scriptable Objects Are AWESOME!
@RestfulCoder3 жыл бұрын
I agree. If you haven't I recommend looking up the talk by the engineer at Unity who introduced them. He gives a lot of real-world examples of how to use them.
@Megahertzs3 жыл бұрын
@@RestfulCoder I have watched the Unity Talk. Super helpful!
@deleteduser11873 жыл бұрын
mind adding text per letter effect?
@RestfulCoder3 жыл бұрын
Look for my typewriter effect tutorial
@PrincessInvaderJai5 жыл бұрын
Thank you so much for this! It's so intuitive! Got any tutorials on multiple health damage volumes behind one health meter and or a RPG lite boss battle system?
@RestfulCoder4 жыл бұрын
Thanks. A battle system might take a series or book to cover well, but I may do one on health and damage bars.
@PrincessInvaderJai4 жыл бұрын
@@RestfulCoder Cool! Thanks! I'm having trouble implementing a boss battle in my game.
@joseprivera21925 жыл бұрын
hello, how can I do sentence animation? I mean, how can i make the letters appear with delay each others, thank you
@RestfulCoder5 жыл бұрын
I'm hoping to do a video on this soon. If you need something now search for "typewriter effect unity". Thanks for watching!
@RestfulCoder5 жыл бұрын
Thanks for the request. Here's a video on how to do it: kzbin.info/www/bejne/fqLEdISOfppngaM
@zurahlamin3604 жыл бұрын
hi, how to assign effect type writing in conversation..
@RestfulCoder4 жыл бұрын
I have a separate video for it. If you look for Typewriter Effect it should show.
@zurahlamin3604 жыл бұрын
@@RestfulCoder owh thank you..
@MauricioAlves-fh4rq5 жыл бұрын
nice video, thanks
@bigemil98174 жыл бұрын
pls help me fast
@RestfulCoder2 жыл бұрын
I'll share the code with my future videos. Apologies for the inconvenience.
@TheAdventuresOfMontuMiah4 жыл бұрын
Why not using timeline?
@nerdydrow4 жыл бұрын
more overhead I think if you are not doing animations
@RestfulCoder4 жыл бұрын
Using animations is totally valid. I usually do as much through code as I can.
@sexypotato4 жыл бұрын
Thanks!
@RestfulCoder4 жыл бұрын
Thanks for watching!
@angryrooster84654 жыл бұрын
Well after 4 min of whatching i end up making another search for dialog in unity.
@RestfulCoder4 жыл бұрын
Sorry it didn't work for you. I hope you found another video that did.