Unity Dialogue System w/ ScriptableObjects - 2019 Update

  Рет қаралды 30,733

Restful Coder

Restful Coder

Күн бұрын

Пікірлер: 124
@celescole9918
@celescole9918 5 жыл бұрын
This is exactly what I was looking for. Thank you for the tutorial!
@RestfulCoder
@RestfulCoder 4 жыл бұрын
I'm glad I could help. Thanks for watching.
@choigohoon6031
@choigohoon6031 3 жыл бұрын
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.
@RestfulCoder
@RestfulCoder 3 жыл бұрын
Thanks. Next time I'll share all the source code.
@vahrkalla4201
@vahrkalla4201 5 жыл бұрын
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 :)
@RestfulCoder
@RestfulCoder 5 жыл бұрын
I'm glad it's helping. Let me know if there are specific topics you'd be interested in hearing more about.
@midnightz8661
@midnightz8661 3 жыл бұрын
Thanks for the tutorial, but seems the code on SpeakerUI and DialogDisplay not completed, mind share the codes? Thanks in advance
@RestfulCoder
@RestfulCoder 2 жыл бұрын
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
@primehyace6473 Жыл бұрын
Thank you mate, I need this
@deano42
@deano42 4 жыл бұрын
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.
@RestfulCoder
@RestfulCoder 4 жыл бұрын
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.
@abdullahamjad3612
@abdullahamjad3612 4 жыл бұрын
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
@RestfulCoder
@RestfulCoder 4 жыл бұрын
Thanks! Nice avatar.
@heybishop
@heybishop 5 жыл бұрын
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!
@RestfulCoder
@RestfulCoder 5 жыл бұрын
HeyBishop, thanks! I have a couple more related videos that you may want to watch, including one called Unity Dialog Choices.
@heybishop
@heybishop 5 жыл бұрын
@@RestfulCoder It's next in my queue!
@IAMMAT87
@IAMMAT87 4 жыл бұрын
How about a shop system with the choice menu. Would be golden
@NSxJohnZ
@NSxJohnZ 4 жыл бұрын
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
@RestfulCoder
@RestfulCoder 2 жыл бұрын
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?
@strawberrymushie7438
@strawberrymushie7438 4 жыл бұрын
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!
@RestfulCoder
@RestfulCoder 2 жыл бұрын
Please check the comments, I've shared the code in question on many recent comments. Apologies for the inconvenience.
@strawberrymushie7438
@strawberrymushie7438 2 жыл бұрын
@@RestfulCoder thank you💗 sorry for troubling you 😄🌸🌸
@icomputo
@icomputo 2 жыл бұрын
Hello, how would it be multilanguage?
@RestfulCoder
@RestfulCoder 2 жыл бұрын
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.
@qtate78
@qtate78 4 жыл бұрын
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
@yasene
@yasene 4 жыл бұрын
Hey was just checking this guide in the display dialog script you should at the end call inactivespeakerui.hide () hope this helps
@RestfulCoder
@RestfulCoder 2 жыл бұрын
yasene's reply looks correct to me.
@CraftyMaelyss
@CraftyMaelyss 4 жыл бұрын
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.
@Keemin
@Keemin 4 жыл бұрын
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
@aikou2886
@aikou2886 4 жыл бұрын
@@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.
@Keemin
@Keemin 4 жыл бұрын
@@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
@RestfulCoder
@RestfulCoder 2 жыл бұрын
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.
@cosminblaga6419
@cosminblaga6419 4 жыл бұрын
Thank you for the tutorial. It helped me build my own system with things taken from this and from another tutorial.
@RestfulCoder
@RestfulCoder 4 жыл бұрын
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.
@franst3909
@franst3909 4 жыл бұрын
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!
@toxiconflict
@toxiconflict 4 жыл бұрын
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?
@toxiconflict
@toxiconflict 4 жыл бұрын
nevermind, I added inactiveSpeakerUI.Hide(); to the setdialog function. It didn't show it in the video though.
@RestfulCoder
@RestfulCoder 2 жыл бұрын
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_Raps
@Kkyo_Raps 4 жыл бұрын
can i have your codes plaese? i can't see half of them in video
@RestfulCoder
@RestfulCoder 4 жыл бұрын
If you search the replies to Matt Burgess and Mayvan I shared a good chunk of the code.
@raudafitriani9650
@raudafitriani9650 4 жыл бұрын
@@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.2701
@merykk.2701 3 жыл бұрын
@@raudafitriani9650 Same! idk what i have to code there
@naayif9034
@naayif9034 4 жыл бұрын
Thank you for this. Been looking for a long time. Appreciate you taking the effort to do this tutorial.
@fadheljunionandhitautama7042
@fadheljunionandhitautama7042 4 жыл бұрын
please make a full tutorial from 0 :(
@RestfulCoder
@RestfulCoder 2 жыл бұрын
Apologies! Thanks for the feedback, next tutorial will include everything and code.
@sophieellis170
@sophieellis170 3 жыл бұрын
Hey, can I ask what is in the SpeakerUIController class? :)
@RestfulCoder
@RestfulCoder 2 жыл бұрын
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); } }
@IAMMAT87
@IAMMAT87 3 жыл бұрын
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.
@RestfulCoder
@RestfulCoder 2 жыл бұрын
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.
@IroquoisPliskin86
@IroquoisPliskin86 2 жыл бұрын
Wow, this is infinitely easier than trying to get Unity to work with xml.
@raggedstorm5799
@raggedstorm5799 3 жыл бұрын
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?
@RestfulCoder
@RestfulCoder 2 жыл бұрын
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); } }
@Megahertzs
@Megahertzs 3 жыл бұрын
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...)
@RestfulCoder
@RestfulCoder 3 жыл бұрын
Great! Scriptable Objects are a great tool.
@kmud7750
@kmud7750 3 жыл бұрын
Really cool system, love scriptable objects so this was awesome. Thanks for this!
@IAMMAT87
@IAMMAT87 3 жыл бұрын
Completed this in 2 hours thank you, i made some personal changes. Have you reconsidered a shop tutorial ?
@RestfulCoder
@RestfulCoder 3 жыл бұрын
I have an Skyrimesque inventory series which should have a lot of overlap with a shop UI.
@kurooda9070
@kurooda9070 3 жыл бұрын
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.
@RestfulCoder
@RestfulCoder 3 жыл бұрын
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.
@kurooda9070
@kurooda9070 3 жыл бұрын
@@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! ^^
@silvertategamiplays
@silvertategamiplays 4 жыл бұрын
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
@RestfulCoder
@RestfulCoder 2 жыл бұрын
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; } } }
@eiyu1776
@eiyu1776 5 жыл бұрын
Hi, do you have the code files downloadable as not completely shown in video. Very helpful video thanks!
@RestfulCoder
@RestfulCoder 5 жыл бұрын
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.
@eiyu1776
@eiyu1776 5 жыл бұрын
@@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!
@RestfulCoder
@RestfulCoder 5 жыл бұрын
@@eiyu1776 Great! Did you move the Left/Right position to be part of the conversation's lines' information? Just curious what approach you took.
@eiyu1776
@eiyu1776 5 жыл бұрын
@@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
@KarosuMaker
@KarosuMaker 5 жыл бұрын
Excellent! Thanks!
@elapplzsl
@elapplzsl 3 жыл бұрын
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.
@AssassinateThisEzio
@AssassinateThisEzio 4 жыл бұрын
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!
@RestfulCoder
@RestfulCoder 4 жыл бұрын
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.
@devy1451
@devy1451 3 жыл бұрын
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.
@RestfulCoder
@RestfulCoder 2 жыл бұрын
You should be able to hook something into the code that processes the selected choice.
@devy1451
@devy1451 2 жыл бұрын
@@RestfulCoder oh, thanks, I was looking for it for 9 months and could not find a solution
@fatmarajab114
@fatmarajab114 4 жыл бұрын
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.
@RestfulCoder
@RestfulCoder 4 жыл бұрын
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.
@fatmarajab114
@fatmarajab114 4 жыл бұрын
@@RestfulCoder Thanks for the response... I'll give it a try
@vickymarquezhdz
@vickymarquezhdz 3 жыл бұрын
@@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...
@unit1285
@unit1285 5 жыл бұрын
Awesome tutorial! Thank you for this vedio :)
@bigemil9817
@bigemil9817 4 жыл бұрын
yo dude why dont you give us the scripts i tried to copy them but you change the script
@RestfulCoder
@RestfulCoder 2 жыл бұрын
Thanks for the feedback. I'll do this with my next videos.
@beardordie5308
@beardordie5308 5 жыл бұрын
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.
@RestfulCoder
@RestfulCoder 5 жыл бұрын
I'm looking forward to tackling that challenge. My next video will be for adding choices, and possibly stringing to together conversations and choices.
@toxiconflict
@toxiconflict 4 жыл бұрын
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?
@toxiconflict
@toxiconflict 4 жыл бұрын
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.
@RestfulCoder
@RestfulCoder 2 жыл бұрын
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.
@yaboijagerlive7923
@yaboijagerlive7923 4 жыл бұрын
thanks a lot this is super helpful
@paulamenz4232
@paulamenz4232 4 жыл бұрын
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?)
@RestfulCoder
@RestfulCoder 4 жыл бұрын
Line[] is a list of lines with a Length property. It looks like you just have a typo: Lenght should be Length.
@paulamenz4232
@paulamenz4232 4 жыл бұрын
@@RestfulCoder omg the day C# works in spanish I'll be so happy. Thank you very much! XD
@RestfulCoder
@RestfulCoder 4 жыл бұрын
@@paulamenz4232 ¡De nada!
@zurahlamin360
@zurahlamin360 4 жыл бұрын
can you show full coding speaker ui
@RestfulCoder
@RestfulCoder 2 жыл бұрын
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); } }
@urielvaldez8350
@urielvaldez8350 3 жыл бұрын
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!
@urielvaldez8350
@urielvaldez8350 3 жыл бұрын
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.
@urielvaldez8350
@urielvaldez8350 3 жыл бұрын
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 :)
@Megahertzs
@Megahertzs 3 жыл бұрын
Scriptable Objects Are AWESOME!
@RestfulCoder
@RestfulCoder 3 жыл бұрын
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.
@Megahertzs
@Megahertzs 3 жыл бұрын
@@RestfulCoder I have watched the Unity Talk. Super helpful!
@deleteduser1187
@deleteduser1187 3 жыл бұрын
mind adding text per letter effect?
@RestfulCoder
@RestfulCoder 3 жыл бұрын
Look for my typewriter effect tutorial
@PrincessInvaderJai
@PrincessInvaderJai 5 жыл бұрын
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?
@RestfulCoder
@RestfulCoder 4 жыл бұрын
Thanks. A battle system might take a series or book to cover well, but I may do one on health and damage bars.
@PrincessInvaderJai
@PrincessInvaderJai 4 жыл бұрын
@@RestfulCoder Cool! Thanks! I'm having trouble implementing a boss battle in my game.
@joseprivera2192
@joseprivera2192 5 жыл бұрын
hello, how can I do sentence animation? I mean, how can i make the letters appear with delay each others, thank you
@RestfulCoder
@RestfulCoder 5 жыл бұрын
I'm hoping to do a video on this soon. If you need something now search for "typewriter effect unity". Thanks for watching!
@RestfulCoder
@RestfulCoder 5 жыл бұрын
Thanks for the request. Here's a video on how to do it: kzbin.info/www/bejne/fqLEdISOfppngaM
@zurahlamin360
@zurahlamin360 4 жыл бұрын
hi, how to assign effect type writing in conversation..
@RestfulCoder
@RestfulCoder 4 жыл бұрын
I have a separate video for it. If you look for Typewriter Effect it should show.
@zurahlamin360
@zurahlamin360 4 жыл бұрын
@@RestfulCoder owh thank you..
@MauricioAlves-fh4rq
@MauricioAlves-fh4rq 5 жыл бұрын
nice video, thanks
@bigemil9817
@bigemil9817 4 жыл бұрын
pls help me fast
@RestfulCoder
@RestfulCoder 2 жыл бұрын
I'll share the code with my future videos. Apologies for the inconvenience.
@TheAdventuresOfMontuMiah
@TheAdventuresOfMontuMiah 4 жыл бұрын
Why not using timeline?
@nerdydrow
@nerdydrow 4 жыл бұрын
more overhead I think if you are not doing animations
@RestfulCoder
@RestfulCoder 4 жыл бұрын
Using animations is totally valid. I usually do as much through code as I can.
@sexypotato
@sexypotato 4 жыл бұрын
Thanks!
@RestfulCoder
@RestfulCoder 4 жыл бұрын
Thanks for watching!
@angryrooster8465
@angryrooster8465 4 жыл бұрын
Well after 4 min of whatching i end up making another search for dialog in unity.
@RestfulCoder
@RestfulCoder 4 жыл бұрын
Sorry it didn't work for you. I hope you found another video that did.
@chupacigarro
@chupacigarro 4 жыл бұрын
amazing!! thx for the great idea!
Unity Dialogue System Choices
24:17
Restful Coder
Рет қаралды 21 М.
How To Build An Event System in Unity
8:01
Game Dev Guide
Рет қаралды 412 М.
Стойкость Фёдора поразила всех!
00:58
МИНУС БАЛЛ
Рет қаралды 4,7 МЛН
SHAPALAQ 6 серия / 3 часть #aminkavitaminka #aminak #aminokka #расулшоу
00:59
Аминка Витаминка
Рет қаралды 2,1 МЛН
Unity3D - Scriptable Object Inventory System | Part 1
31:31
Coding With Unity (Andy)
Рет қаралды 330 М.
I run untested, viewer-submitted code on my 500-LED christmas tree.
45:17
How to make a Dialogue System with Choices in Unity2D | Unity + Ink tutorial
29:45
Shaped by Rain Studios
Рет қаралды 144 М.
Creating a Flexible Dialogue System With Unity 2D
10:17
Semag Games
Рет қаралды 74 М.
Is Computer Science still worth it?
20:08
NeetCodeIO
Рет қаралды 354 М.
3 Hours vs. 3 Years of Blender
17:44
Isto Inc.
Рет қаралды 5 МЛН
Dear Game Developers, Stop Messing This Up!
22:19
Jonas Tyroller
Рет қаралды 716 М.
Undertale DIALOGUE|CUTSCENE in Unity (Episode 1)
16:33
Pandemonium
Рет қаралды 65 М.