I wouldn't worry about video length when making tutorials like this... I'd rather watch this for an hour than go through 10+ other, 10 minute long, half assed tutorials. Thank you!
Thank you for this. Finding tutorials that teach best practices are rare. Most tutorials just teach game jam level implementations. This right here is a gem of a video. Thank you ❤
Thank you so much for making video that explains how to do thing "correctly" in a real development situation and not just the basic way. That is really useful.
I've been looking for a tutorial like this for half a year now because I was floundering with how to handle my UI systems. I've seriously been doing everything inside of the individual widgets' blueprints and it got so incredibly messy. A nice framework like this was the jumping-off point I needed to get everything working the way it should. You're saints man, hats off.
Just to say one tip. The UE guys in the Common UI tutorial on their channel said using canvas panels for all your widgets will be a CPU bottleneck. You should not try and use canvases if possible or if you do very little.
@@maxwellprince5742 You just use other things like Overlays. It means altering how you construct your widgets but you deffo dont need canvas panels. I only use one in my whole project for my HUD and thats it
@@maxwellprince5742 Think of a canvas panel as a glass window over your game. It's transparent, but it's still calculating. Then you add more canvas over that, making a multi layer transparent shader. It can get pretty expensive and will drop your frame rate. The BEST is to use a material shader to build ur UI, but if that's not possible, then standalone modal widgets are the way to go. It's best to profile and then see if you can budget canvas into your game.
That's amazing. I really love that you show the principles behind your decisions first, because when you understand principles you can begin coding! Thanks! HUD Class + Player Controller is super setup)
Awesome - I couldn't find my macro because I was using your player controller that you built in previous videos. My parent class was "character". But I was delighted to figure that out! I've learned more in this tutorial than in any other.
Thanks for this videos, i have seen many people making unreal tutorial channels and than give up half way, so is kinda difficult to find a channel that push until the end of i project, i hope this is not the case, i have learned a ton today, thanks a lot.
I love this kinds of tutorial! Makes me feel more ready to persue the industry by follow best practices, please make more, (perhaps about organization of assets, or packaging?). Thanks!
Great, this is the best multiplayer game tutorial in the world, we need more tutorials of this level, the idea is very clear, looking forward to more videos about managing multiplayer games, subscribed and liked!:)
Really insightfull tutorial UI management is a topic I haven't seen much about especially when it comes to multiplayer and its nuances. Keep up the awesome!
Thank you very much, I am just yet diving into widgets, As you know it's not about writing code, it's about writing performance friendly code. I'll watch this several repeats to understand a few, It's just the beginingg of the way and short for me... Maybe other friends do know everything, They may see it boring but it's not boring for beginners like me who just got there after accmoplishing previous in game making, Thank you very very much, Regards....
If you are making a game to release and others to play you should probably look at using the "Common UI" plugin provided by EPIC since late UE4 which is also used in Lyra as it allows for theming, handling different / swapping inputs and alot of the "core" / "common" logic most people end up always doing in UI development.
Unfortunatly it’s highly limited in blueprints. I recommend it more for C++ projects. It’s rather complicated and undocumented last time I checked. For me it saved more time not to use it.
@@GoodguyGastly In 5.2 they have updated Common UI to work with Enhanced Input and have fleshed out the documentation more but its still lacking. Some YT'ers have recently released some videos on the topic + there was a recent'ish EPIC released video too.
CommonUI is still garbage unfornately. Even the CommonUI demo map in Content Examples project is broken. For example if you press your close/back button twice on a game pad when a pop up widget is inside its animation fade, it completely breaks focus.
Revisiting this video. The Hood Class joke is actually pretty funny. Cheeky. Glad you have all these videos. They have really made me re-think how I approach setting up my projects.
Thank you for a cool middle-level tutorial! It is very hard to find such staff covering proper organisation (split logic between PlayerController and HUD class, and so on...)
Sooo that is where the HUD goes, not in the controller, game instance or game mode like everybody else is showing 🤔 Watching your vids for a while now and it's always a pleasure when something new shows up.
Thanks for the tutorial, I understood only a half of it yet. But I was able to include a pause game state with an Enhanced Input Action instead of a keyboard event. I wished the menu had a close button or an x, just to learn the right alternative way to exit the menu from a widget blueprint with the solution from this tutorial.
I had the same question. I was wondering what would guarantee the HUD class being valid? What if the counter expires and we never get the valid class? Not checking if it is valid again would error out. Edit: I may have spoken too soon. At 37:15 he does check if it is valid again, so it shouldn't error out
17:40 - Bro's laughing very proudly... 19:08 - 💀 22:10 - Somehow, it's giving me motion sickness ;-) 23:53 - Big 🧠 Just found out your RUclips channel. You're underrated af. Enjoyed every moment of these videos. Keep it up, dude! You deserve millions of subs!
Great tutorial! though, its amazing how UE make such a simple functionality a long and tedious task! this will take less than 5 minutes to implement in Unity :). Keep the great work man!
Really amazing, I personally miss this level on in-depth tutorial. Love you guys. I hope to see similar in-depth techniques in future. Any one reading this comment First Subscribe!!!
Nice Video, a few questions though why not use widget switching in your case is it any less performant to have one main hud and then use switching between panels in one menu as compared to loading seperate widgets for example one main panel on the left with say settings with it, account, game play etc then another main panel with its own structure like when they click settings the settings menu appears with another switcher for sound, gameplay, video audio etc panels. One of the great things I love using Common UI is the ability to style buttons etc and then just select the style in a drop down in the details panel for a button for example.
I am unable to find an answer to this question, How can you control the visibility of only one component inside a widget/canvas. My example has a text that I need to appear when I get close and a progress bar underneath it to only appear as I press E, I first had them separated into two different widgets which worked great until I zoom in game and the distance between the two changes depending on proximity. I added the progress bar into the same widget to have it distanced properly and I am unable to control or even get access to the progress bar object from a blueprint to toggle visibility seperately. Any help is appreciated.
Hey great video! I have question about managing, how would you setup UI that have alot of depth, for example menu button opens class widget that can open many class widgets, and those widget can open another multiple widgets. Thanks for any suggestion, once again i want to say amazing videos!
Can't I just use an event dispatcher on the HUD class like OnHUDInitialized where in the player pawn we simply bind that event instead checking and delaying? Or are the create widget asynchronous so we can't know if it's actually loaded in?
I see "hood class" in the time line. I'm like Oooooo. What's that? Never heard of that before then as soon as you say the word I just wish I could slap YT.
Hi! Thank you so much for the tutorial! I have a question regarding the creation and toggling of the widgets on the viewport. Why did you choose to use this and not a Widget Switcher (on the Designer View in a Widget Blueprint) and then change the indexes? Are there any pros or cons generally for this?
@@Kekdot Ok thank you! One more question, though. If we have multiple widgets, wouldn't that create a very long line of creating the widgets and adding them to the array? How would you do it if you had to make it easier to edit and add/remove the widgets more dynamically? I am currently stuck in this problem T-T
Around 25:00 you are using inputs directly in the graph - isn't it more appropriate to use an InputDataTable and mapping, so that there are not direct coupling between the menu classes and the input map? Then the user could ostensibly remap input as well as having abstract interface for gamepads, etc. I'm a noob, trying to learn, but it seems that Enhanced Input allows for this type of paradigm in-editor, and then you could GetEnhancedInput action from the graph, instead of the explicit key.
@@Kekdot as i followed your steps when i changed the player controler class to BP_PC_BaseSetup in BP_GM_BaseSetup i lost my movement in game. Using 5.1.1 version. its this the case discussed above ? any idea how i could fix it pls ? i started 2 days ago so noob explanetion would be nice. thank you. Also do you have any tips what to do if i dont want when i toogle a widget like mounts to the inventory widget been close ?
Hi, what should i do in case if i have multiple pawns and each one of them can dispaly information using same widget. Should I create one widget per pawn and add to array, or should I create one widget and then regarding which pawn I click populate widget with data of given pawn?
I followed the tutorial but I instead wanted to switch between the playerUI, PauseScreen and Deathscreen. I made a FlipFlop to alternate between my Pausemenu and PlayerUI (I'm just trying to swap between the active widgets). I can open the menu but why can't I close it?
Hey Kekdot, I implemented your BP Macro Library in Unreal 5.3 and I'm getting this error: "Delay generated from expanding Get BP Game Mode 01 contains a latent call, which cannot exist outside of the event graph". Did something change in the newest version of Unreal? When I change the Delay node to something else I no longer get the error but I cannot find a suitable replacement for delay. Set Timer by Event or Set Timer by Function don't seem to work very well in macros.
Great Tutorial. I have one doubt. What about options, selection menu where game needs to switch from one Widget to another. How will i control that, Macro you create is not callable in Widget Graph. how will I switch between widgets from widget?
Hey can you do a tutorial with this but isntead of using keys, my widgets use buttons instead, like in a game main menu. I want to collapse it and make it popup, and allow the system to focus on it when pressed
At 30:18 you are showing bad thing. HUD already has Owned Player Controller and it will be instantiated after local player controller, so it is okay to subscrube on player controller events from HUD class intead of dirty hacks. @Kekdot, what do you think about that?
@@Kekdot My main menu wasn't appearing until I set a custom event to create all the widgets, then called the custom event from the main menu level on beginplay. Begin play wasn't hitting in the HUD class.
If when u create the macro you set it as character in the blueprint options instead of controller, then the macro will work for bp third person character. if you want the macro to work then on the cast to (whatever you named your HUD class) you need to then attach the Get HUD which is attached to a Get Player Controller. From what i understand it needs to reference the get player controller which can do the get hud which then can be ran into the cast to HUD class. Thats how i got it to work myself.
Very good explained Video. But since i do all exactly like this all my progressbars only works on server and nomore on client side😢 Please give me an answer to that. I'm on your Discord but nobody's answering me there either! I just can not manage it. Either the progress bar only works on the server side or only on the client side. No matter how I turn it. I'm really getting desperate and giving up! That really takes the fun out of programming.
Hey, I could't figure out what's the point of trying to cast to our custom HUD class several times in a row. Like, is there such a great difference in time between the creation of Player controller and our HUD class? If there's not, then it's us who didn't set the proper HUD class, and hence nothing will change in runtime, hence it's pointless to check. So why are we doing this? 🙃
How would this sort of thing handle some sort of UI that should be seen on every client, like a ping in the world space, or overhead healthbars? Since the HUD class is always run on the client, would those things become impossible without an additional class?
The HUD class as the name intends is only intended for the Heads up Display of the player. So basically only the 2D UI that an individual player sees. In case you wish to use world UI then basically spawn an actor that has a UI component attached to it set to either screen or world space. Checkout my player name above character head tutorial.
Concerning best practices, you should only use canvas panels when you really need to. In most cases you should favor overlays and use child widgets to arrange things. Like so many other things in Unreal, the easy/nooby way of doing things isn't really going to affect performance in a small tutorial project, but at production scale can start causing problems. Best to get in the habit of setting things up to scale early on (within reason of course, but in this case it's not a lot of extra work).
Hi there Kekdot. I'm desperate. For some reason my widgets are not being activated when packaging the game in shipping configurarion. There's just little information about this Idk who else could help me.
@ilollipop1009 how do you get a working healthbar with this system? No matter how I do it, I only get the progress bar to run on the server side. But the hud for the progress bar is also shown to me in the clients. They just don't work.
Hi I have a question, the system is really great, but my concern is that I want to create a main menu but it does not work. Because for the main menu I have to create another level than the base level game, and I think it messes with everything. So what would you do ? Sorry if I did not explain well I am very confused as well :)
Using a delay node to cast a variable seems like a really bad practice. What happens if your defined timeout works now but one year into development is not enough time and the cast begin to fail? Do you just manually increase it over time? In this particular case, wouldn't it be better to wait until the player has initialized completely and then cache all these variables? You have the OnPostLogin event in the GameMode that is triggered only after the player has received a player controller and that event returns the player controller, it could then call a "PostInit" custome function in the player controller, for example. There must be other ways to do this caching using events and delegates. I really like your tutorials, some of them have some great points well thought and presented but other tutorials are inconsistent and sometimes even go against previous ones were a particular subject was better explained and closer to what the right solution or approach must be. Keep up the good work and thanks for sharing your knowledge!
Yea, sometimes getting an error is a good thing, especially for critical classes like player controller. Making a fail safe with a delay that can timeout sounds like something you never want to do. If I have a class that if it fails, bunch of the things in my project would not work, do I ever want to have timeout and just let it be?
Just because the menu is not in the viewport, and not ticking, this doesn't mean it isn't using resources. It it's loaded it's load Plenty of widgets don't even use tick
Hey guys,
👨🏫 My Patreon link:
www.patreon.com/kekdot
Download Project Files | Premium Tutorials | Courses
💦 Get our Game on Steam | Kekdot Center:
store.steampowered.com/app/1487180/Kekdot_Center/
Tutorials teaching best practices and actually used in real game are rare. For that, I thank you very very much. Want to learn more from you
I wouldn't worry about video length when making tutorials like this... I'd rather watch this for an hour than go through 10+ other, 10 minute long, half assed tutorials. Thank you!
this has got to be one of the greatest ue5 tutorials of all time
Thank you for this. Finding tutorials that teach best practices are rare. Most tutorials just teach game jam level implementations. This right here is a gem of a video. Thank you ❤
Thank you so much for making video that explains how to do thing "correctly" in a real development situation and not just the basic way. That is really useful.
I've been looking for a tutorial like this for half a year now because I was floundering with how to handle my UI systems. I've seriously been doing everything inside of the individual widgets' blueprints and it got so incredibly messy. A nice framework like this was the jumping-off point I needed to get everything working the way it should. You're saints man, hats off.
This is the organization that I was looking for. This made enough sense that I can now stream line all the tutorials I've watched.
When the info is this good, it doesn't matter how long it takes! (Completed the video, it all worked for me. Thank you much!)
I can watch your videos WHOLE DAY!! They are so useful and informative. I've learned a lot from each of them 👏👏👏 you are a great tutor.
How did you make a health progressbar in this way?
Just to say one tip. The UE guys in the Common UI tutorial on their channel said using canvas panels for all your widgets will be a CPU bottleneck. You should not try and use canvases if possible or if you do very little.
the reference -
ruclips.net/user/liveTTB5y-03SnE?feature=share&t=2880
How can we use less Canvas Panels? I seem to have seen multiple times that for example, a Text Widget needs a Canvas Panel to act as the root
@@maxwellprince5742 I used SizeBox
UPD: Inside SizeBox placed Overlay where can be many children
@@maxwellprince5742 You just use other things like Overlays. It means altering how you construct your widgets but you deffo dont need canvas panels. I only use one in my whole project for my HUD and thats it
@@maxwellprince5742 Think of a canvas panel as a glass window over your game. It's transparent, but it's still calculating. Then you add more canvas over that, making a multi layer transparent shader. It can get pretty expensive and will drop your frame rate. The BEST is to use a material shader to build ur UI, but if that's not possible, then standalone modal widgets are the way to go. It's best to profile and then see if you can budget canvas into your game.
That's amazing. I really love that you show the principles behind your decisions first, because when you understand principles you can begin coding! Thanks! HUD Class + Player Controller is super setup)
Best widget video on youtube!
I am glad you clarified to set the widget as collapsed, I was about to comment saying "Dont set the widget as hidden." xD
Awesome - I couldn't find my macro because I was using your player controller that you built in previous videos. My parent class was "character". But I was delighted to figure that out! I've learned more in this tutorial than in any other.
24:00 mind blown! :D Thank you for sharing this. Loved the long form content!
Thanks for this videos, i have seen many people making unreal tutorial channels and than give up half way,
so is kinda difficult to find a channel that push until the end of i project, i hope this is not the case, i have learned a ton today, thanks a lot.
Wow extremly good code man! I did / used some of the concepts in the video but some are very new to me. Keep it up!
Love the vid. Learned a lot watching this. Enjoy how you explain the WHY you are doing what you’re doing. Keep it up!
Thank you so much! This was a HUGE help to a project that I am starting!
I love this kinds of tutorial! Makes me feel more ready to persue the industry by follow best practices, please make more, (perhaps about organization of assets, or packaging?). Thanks!
By far this is the best widget tutorial i have seen thanks for this video brother
Better than a beautiful example, it is an excellent example! Man, thank you, I am so much clearer now on this use of widgets.
Ah man, It's thanks to you that my UI setup was no longer a mess of event dispatchers. 😂
Great, this is the best multiplayer game tutorial in the world, we need more tutorials of this level, the idea is very clear, looking forward to more videos about managing multiplayer games, subscribed and liked!:)
Really insightfull tutorial UI management is a topic I haven't seen much about especially when it comes to multiplayer and its nuances. Keep up the awesome!
Thank you very much, I am just yet diving into widgets, As you know it's not about writing code, it's about writing performance friendly code. I'll watch this several repeats to understand a few, It's just the beginingg of the way and short for me... Maybe other friends do know everything, They may see it boring but it's not boring for beginners like me who just got there after accmoplishing previous in game making, Thank you very very much, Regards....
Ur a legend dude nice tutorials
If you are making a game to release and others to play you should probably look at using the "Common UI" plugin provided by EPIC since late UE4 which is also used in Lyra as it allows for theming, handling different / swapping inputs and alot of the "core" / "common" logic most people end up always doing in UI development.
Unfortunatly it’s highly limited in blueprints. I recommend it more for C++ projects.
It’s rather complicated and undocumented last time I checked.
For me it saved more time not to use it.
@@Kekdotis it still like this? Ui is so annoying in UE. This video was a great help though. Thanks a ton!
Still like it unfortunatly
@@GoodguyGastly In 5.2 they have updated Common UI to work with Enhanced Input and have fleshed out the documentation more but its still lacking.
Some YT'ers have recently released some videos on the topic + there was a recent'ish EPIC released video too.
CommonUI is still garbage unfornately. Even the CommonUI demo map in Content Examples project is broken. For example if you press your close/back button twice on a game pad when a pop up widget is inside its animation fade, it completely breaks focus.
outstanding Video. Definitely am using this process going forward for our UI
Thank you for a wonderful tutorial. It is amazing how much new stuff I've learned
Crisp and clear. Love your videos on this topic!
Revisiting this video. The Hood Class joke is actually pretty funny. Cheeky. Glad you have all these videos. They have really made me re-think how I approach setting up my projects.
Thank you for this. There is a lack of information around this topic.
Very cool and very helpful thank you so much!
Love the tutorial, thanks for sharing. Where can I find the next video, because currently I am lost at how to update my UI from my Player?
Awesome Tutorial. Much appreciated, thank you!
Thank you for a cool middle-level tutorial!
It is very hard to find such staff covering proper organisation (split logic between PlayerController and HUD class, and so on...)
Sooo that is where the HUD goes, not in the controller, game instance or game mode like everybody else is showing 🤔
Watching your vids for a while now and it's always a pleasure when something new shows up.
That is indeed where your UI is truly supposed to be managed. Just as seen in the UE docs.
More videos coming this week. One for each day of the week
Thank you for the work you've done.
Great solution.
So well explain. I love the tutorial!! I hope you continue the Multiplayer series
Fantastic Tutorial, subscribed!
thanks! very well explained. Really like this kind of Best Practices videos
really phenomenal tutorial
You can use the arrow on the add to view port to open it, and use the border to arrange certain widgets in custom zorder
Thanks for showing how it could be done better. Cheers
wow should have know you earlier, great work you are doing.
Thanks for the tutorial, I understood only a half of it yet. But I was able to include a pause game state with an Enhanced Input Action instead of a keyboard event.
I wished the menu had a close button or an x, just to learn the right alternative way to exit the menu from a widget blueprint with the solution from this tutorial.
I enjoyed the video very much! Could you explain to my why you don't have to check if the HUD class is valid before the initialization has completed?
I had the same question. I was wondering what would guarantee the HUD class being valid? What if the counter expires and we never get the valid class? Not checking if it is valid again would error out.
Edit: I may have spoken too soon. At 37:15 he does check if it is valid again, so it shouldn't error out
17:40 - Bro's laughing very proudly...
19:08 - 💀
22:10 - Somehow, it's giving me motion sickness ;-)
23:53 - Big 🧠
Just found out your RUclips channel. You're underrated af. Enjoyed every moment of these videos. Keep it up, dude!
You deserve millions of subs!
42:33 It really is a nice tutorial :D
Thanks for the talk and chalk.
Great tutorial! though, its amazing how UE make such a simple functionality a long and tedious task! this will take less than 5 minutes to implement in Unity :). Keep the great work man!
Actually very nice tutorial
INCREADIBLE!!🤯
Really amazing, I personally miss this level on in-depth tutorial. Love you guys. I hope to see similar in-depth techniques in future. Any one reading this comment First Subscribe!!!
Nice Video, a few questions though why not use widget switching in your case is it any less performant to have one main hud and then use switching between panels in one menu as compared to loading seperate widgets for example one main panel on the left with say settings with it, account, game play etc then another main panel with its own structure like when they click settings the settings menu appears with another switcher for sound, gameplay, video audio etc panels.
One of the great things I love using Common UI is the ability to style buttons etc and then just select the style in a drop down in the details panel for a button for example.
Excellent excellent tutorial :)
I like it! thanks a lot!
It would be better to do it in two parts.😊
Where can i find the next video for mention at the end of this video where the stats are hooked up?
Awsome tutorial
I am unable to find an answer to this question, How can you control the visibility of only one component inside a widget/canvas. My example has a text that I need to appear when I get close and a progress bar underneath it to only appear as I press E, I first had them separated into two different widgets which worked great until I zoom in game and the distance between the two changes depending on proximity. I added the progress bar into the same widget to have it distanced properly and I am unable to control or even get access to the progress bar object from a blueprint to toggle visibility seperately. Any help is appreciated.
Maybe you can make a Video for this series how to create Health and Stamina Bars.
Hey great video! I have question about managing, how would you setup UI that have alot of depth, for example menu button opens class widget that can open many class widgets, and those widget can open another multiple widgets. Thanks for any suggestion, once again i want to say amazing videos!
Have you used the CommonUI classes? I feel like pushing on and off the widget stack is a more built-in way of doing this. You should check it out!
Can't I just use an event dispatcher on the HUD class like OnHUDInitialized where in the player pawn we simply bind that event instead checking and delaying? Or are the create widget asynchronous so we can't know if it's actually loaded in?
I see "hood class" in the time line. I'm like Oooooo. What's that? Never heard of that before then as soon as you say the word I just wish I could slap YT.
Lmao
Hi! Thank you so much for the tutorial! I have a question regarding the creation and toggling of the widgets on the viewport. Why did you choose to use this and not a Widget Switcher (on the Designer View in a Widget Blueprint) and then change the indexes? Are there any pros or cons generally for this?
You’ll just have way more widgets loaded in at the same time even if they’re not used.
@@Kekdot Ok thank you! One more question, though. If we have multiple widgets, wouldn't that create a very long line of creating the widgets and adding them to the array? How would you do it if you had to make it easier to edit and add/remove the widgets more dynamically? I am currently stuck in this problem T-T
Very good explained Video. But since i do all exactly like this all my progressbars only works on server and nomore on client side😢
Around 25:00 you are using inputs directly in the graph - isn't it more appropriate to use an InputDataTable and mapping, so that there are not direct coupling between the menu classes and the input map? Then the user could ostensibly remap input as well as having abstract interface for gamepads, etc. I'm a noob, trying to learn, but it seems that Enhanced Input allows for this type of paradigm in-editor, and then you could GetEnhancedInput action from the graph, instead of the explicit key.
I think He doesnt use 5.1.1
In 5.0 there isnt the enhanced Input
True
@@Kekdot as i followed your steps when i changed the player controler class to BP_PC_BaseSetup in BP_GM_BaseSetup i lost my movement in game. Using 5.1.1 version. its this the case discussed above ? any idea how i could fix it pls ? i started 2 days ago so noob explanetion would be nice. thank you. Also do you have any tips what to do if i dont want when i toogle a widget like mounts to the inventory widget been close ?
very good Tutorial , keep up the good coding , you deserve more likes ! Liked 126
Hi, what should i do in case if i have multiple pawns and each one of them can dispaly information using same widget. Should I create one widget per pawn and add to array, or should I create one widget and then regarding which pawn I click populate widget with data of given pawn?
Love it! any ETA for sequel?
I followed the tutorial but I instead wanted to switch between the playerUI, PauseScreen and Deathscreen. I made a FlipFlop to alternate between my Pausemenu and PlayerUI (I'm just trying to swap between the active widgets). I can open the menu but why can't I close it?
Thank you so MUCH!!!
Hey Kekdot, I implemented your BP Macro Library in Unreal 5.3 and I'm getting this error: "Delay generated from expanding Get BP Game Mode 01 contains a latent call, which cannot exist outside of the event graph". Did something change in the newest version of Unreal? When I change the Delay node to something else I no longer get the error but I cannot find a suitable replacement for delay. Set Timer by Event or Set Timer by Function don't seem to work very well in macros.
Great Tutorial. I have one doubt. What about options, selection menu where game needs to switch from one Widget to another. How will i control that, Macro you create is not callable in Widget Graph. how will I switch between widgets from widget?
Hey can you do a tutorial with this but isntead of using keys, my widgets use buttons instead, like in a game main menu. I want to collapse it and make it popup, and allow the system to focus on it when pressed
At 30:18 you are showing bad thing. HUD already has Owned Player Controller and it will be instantiated after local player controller, so it is okay to subscrube on player controller events from HUD class intead of dirty hacks. @Kekdot, what do you think about that?
Newbie here: Why does the Macro for creating the widget are a Player Contoller Macro and not a HUD macro?
Should I be trying to use the same HUD for the main menu, lobby, and game? Or should I use a different HUD for each, setting it in the gamemode?
Different child class for each
@@Kekdot My main menu wasn't appearing until I set a custom event to create all the widgets, then called the custom event from the main menu level on beginplay. Begin play wasn't hitting in the HUD class.
Is player controller the same as a player blueprint like BP_FirstPersonCharacter? because I don't have the "get HUD" option at 27:14
No a player controller and a character class are two different actors
@@Kekdot ok thanks. I will have a look at it. Great video, but might be too advanced for me just yet :)
If when u create the macro you set it as character in the blueprint options instead of controller, then the macro will work for bp third person character. if you want the macro to work then on the cast to (whatever you named your HUD class) you need to then attach the Get HUD which is attached to a Get Player Controller. From what i understand it needs to reference the get player controller which can do the get hud which then can be ran into the cast to HUD class. Thats how i got it to work myself.
How easy it is to import a custom made UI from Photoshop into UE5?
Health Variable replicates right from Char BP but in WPB i only get it from Server, so healthbar don´t work for clients. What can i do?
Very good explained Video. But since i do all exactly like this all my progressbars only works on server and nomore on client side😢
Please give me an answer to that. I'm on your Discord but nobody's answering me there either!
I just can not manage it. Either the progress bar only works on the server side or only on the client side. No matter how I turn it. I'm really getting desperate and giving up!
That really takes the fun out of programming.
Hey, I could't figure out what's the point of trying to cast to our custom HUD class several times in a row. Like, is there such a great difference in time between the creation of Player controller and our HUD class? If there's not, then it's us who didn't set the proper HUD class, and hence nothing will change in runtime, hence it's pointless to check. So why are we doing this? 🙃
What better:
One HUD class that contains main menu and game widgets
Two HUD classes, one for main menu, another for game?
Why does nothing ever work in UE5? When I re spawn the character the health is reloaded but the user interface displays zero health?
You are powerful
How would this sort of thing handle some sort of UI that should be seen on every client, like a ping in the world space, or overhead healthbars? Since the HUD class is always run on the client, would those things become impossible without an additional class?
The HUD class as the name intends is only intended for the Heads up Display of the player.
So basically only the 2D UI that an individual player sees.
In case you wish to use world UI then basically spawn an actor that has a UI component attached to it set to either screen or world space.
Checkout my player name above character head tutorial.
is there any way to use the visibility way for a widget that must be created on mouse location for example an item details panel ?
Concerning best practices, you should only use canvas panels when you really need to. In most cases you should favor overlays and use child widgets to arrange things. Like so many other things in Unreal, the easy/nooby way of doing things isn't really going to affect performance in a small tutorial project, but at production scale can start causing problems. Best to get in the habit of setting things up to scale early on (within reason of course, but in this case it's not a lot of extra work).
Hi there Kekdot. I'm desperate. For some reason my widgets are not being activated when packaging the game in shipping configurarion. There's just little information about this Idk who else could help me.
can we get an updated version for 5.2. it seems the way you set up the toggle widgets is different in 5.2
i did all step by step in 5.2 and i had no problems
@@ilollipop1009 in that case I'll have to give it another go, thanks!
@ilollipop1009 how do you get a working healthbar with this system? No matter how I do it, I only get the progress bar to run on the server side. But the hud for the progress bar is also shown to me in the clients. They just don't work.
Hi I have a question, the system is really great, but my concern is that I want to create a main menu but it does not work. Because for the main menu I have to create another level than the base level game, and I think it messes with everything. So what would you do ? Sorry if I did not explain well I am very confused as well :)
The main menu is an exception that has its own game mode and simple HUD logic.
This tutorial is intended for handling in-game UI
@@Kekdot Thank you very much
Using a delay node to cast a variable seems like a really bad practice. What happens if your defined timeout works now but one year into development is not enough time and the cast begin to fail? Do you just manually increase it over time? In this particular case, wouldn't it be better to wait until the player has initialized completely and then cache all these variables? You have the OnPostLogin event in the GameMode that is triggered only after the player has received a player controller and that event returns the player controller, it could then call a "PostInit" custome function in the player controller, for example. There must be other ways to do this caching using events and delegates.
I really like your tutorials, some of them have some great points well thought and presented but other tutorials are inconsistent and sometimes even go against previous ones were a particular subject was better explained and closer to what the right solution or approach must be.
Keep up the good work and thanks for sharing your knowledge!
Yea, sometimes getting an error is a good thing, especially for critical classes like player controller. Making a fail safe with a delay that can timeout sounds like something you never want to do. If I have a class that if it fails, bunch of the things in my project would not work, do I ever want to have timeout and just let it be?
Just because the menu is not in the viewport, and not ticking, this doesn't mean it isn't using resources.
It it's loaded it's load
Plenty of widgets don't even use tick
(*Supporting your channel with any messages))))
@23:19 where can I get that texture
Good tutorial, showing good and bad examples.