Has anyone tried to get the dialogue to display inside a 3D widget? I’m still really new at Blueprints so I’m having trouble wrapping my head around how I would override the existing 2d UMG. Any hints would be hugely appreciated. (working on a VR project so 2d won’t work)
Well, it looks like the forum decided I didn’t need notifications anymore… apologies for the late reply
I’m not sure how to deal with FMOD, but the sounds can be triggered OnCharacterDisplayedChanging in your UI_Dialogue child class if you wanted a ‘character chirp’ (every character makes a small sound):
If you wanted dialogue audio, you can use either PlaySound or the Audio column using audio assets
Hi!
Have a problem and I’m not sure why it’s happening. I have a character hooked up to the system, but for some reason it defaults the speaker name and shows a portrait (default), even though I have set this to false. It’s recognising and displaying the dialogue and branches I have set up, but seems to not want to display the NPC name or hide the portrait. I’ve tried remaking the Speaker attributes from scratch a few times, but no luck.
For my other two characters set up, I do not have these problems occur. Any ideas?
Thank you!
Hi Chlowaii,
The first thing I could think of would be that your BPC_Dialogue child class might not override the GetSpeakerAttributes function to return values from the right data-table?
Hey, pardon me for barging in on this conversation, but I’m really interested in this approach as well. I’ve got two questions:
What if I wanted to swap out different “chirps” depending on the speaker? How would I check who’s speaking and change the SFX accordingly?
And what if I wanted to play a different sound when the sentence has finished? In most Zelda games, for instance, there’s a standard “chirp” noise that plays while the dialogue is running but also a “we’ve reached the end of the sentence” noise. How would I be able to detect if the dialogue has finished, or if it has reached the final character in the sentence?
Thanks a million for answering all these questions, Grogger. Your add-on is a lifesaver. (I’m sure I’ve said that before, but it bears saying again.)
Hmm, to play a different chirp, you could maybe do a switch in your UI_Dialogue on the DialogueItem’s SpeakerID. Either that or set something in the dialogue script, like a function that ‘sets’ the current chirp sound to play.
To do things at the end of the dialogue, there’s an event in UI_Dialogue called “OnAllTextDisplayed” that signals the end of the dialogue at the point of the last character having been printed.
It’s nice to hear at any rate, I’m glad it’s been helpful
Hi! I’m interested in buying this system - looks like exactly what I need - but I did want to verify something first. I read the documentation and watched the tutorial videos and didn’t find a clear answer. Is it possible use the system so that it can sometimes be triggered by the player pressing a button, and sometimes triggered automatically when the player collides with a trigger volume? Also, I noticed that we can trigger events at the end of a line (post-action), but the documentation doesn’t explain where I would create those events and how to call them. Other than that, I am very excited to buy this tool and start creating some dialogue for my game!
Hi Charlie,
It certainly can be called from anywhere you’d like, by calling the SetState blueprint function on the dialogue component. I have some being called by trigger volumes, others by pressing ‘E’ on a character, and some others through matinee & sequencer.
Custom functions can be built in the dialogue actor component, implemented in the “HandleScriptFunction” blueprint function (there is a brief example in the documentation here)
Cheers!
Hello there, I recently purchased this excellent dialogue system and am getting to grips with it, it’s great so far. I was wondering, however, if anyone might be able to help me figure out something that’s probably very simple. Basically, all I want is to change a camera in my level when the dialogue ends. If anyone can help me achieve this, I’ll be extremelygrateful.
Thanks.
Hi AndrewLindsay,
I have two methods that I use to do this:
- Create a custom script function that searches for a camera by tag or name (eg. SetCamera(‘cameraTag’) - feel free to add optional parameters for camera transitions and blend options here too)
- Control the cameras by event in the level blueprints, execute level events from the dialogue with a custom function
- I put a dispatcher in my GameState that the level blueprint registers to on BeginPlay - I then made an ExecLevelEvent(EventName) script custom function that triggers that dispatcher
I’ve found both to be useful in different scenarios, the level event especially for ‘special’ cases
Let me know if that all makes sense haha
Cheers
Hi, thanks for the really quick and detailed response! Unfortunately I’m pretty noobish in UE4 so if you could possibly explain a little further I’d really appreciate it! I think I understand method 2 more, so basically I have this code set up in my level blueprint for when I want the camera to return to the player’s position:
and then I need to call this event in the BPC_DemoDialogue Blueprint? I’m afraid I’m not very sure how to go about this
Sorry and thanks for the help!
Nevermind, to my complete surprise I managed to figure it out, thanks a lot for all the help!
Hello again, after having conquered my previous issue with the help of, I come in search of aid for a different problem. Basically I am using the gamepad to select dialogue options, which is supported right away by the system, which is great. I can’t seem to find a way to choose which gamepad button is assigned to which option, however. At the minute it seems as if the ‘Y’ button on my xbox one controller selects the first option, with ‘A’ selecting the second. If possible I’d like to change these. Does anyone know how I can achieve this? Thanks a lot for any assistance!
I’m glad you managed on the first issue
The gamepad controls are configured in the UI_Dialogue (on EventTick), by default, as FaceButton Bottom as “select highlighted option”, and FaceButton Top as “back” with the assumption that the last item is always back.
Just a note though, the gamepad controls were minimally implemented because of the limitations at the time when the system was written. If you need something more custom or more flexible, you can set the dialogue into “Input Mode Unmanaged” and handle the events through the player controller yourself (this is using the functions labeled “gamepad” in UI_Dialogue).
Hi,
Has this issue been fixed or is there a workaround? I’m having the same problem. Whenever I trigger a dialog with a collision trigger, the player character stop correctly upon opening the dialog UI. However, after closing the dialog UI, the player character starts moving again in the same direction it was moving before, even if the W key has been released in the meantime. What’s happening is the InputAxis MoveForward value is stuck at value 1, even when W is released. Anybody has a fix for this?
I managed to fix this by changing the BPC’s Set Input Type function to use ‘Set Input Mode Game and UI’ for ‘Mouse and Keyboard’ as well. Movement input is disabled anyway, so there should be no interference. Just in case anybody runs into this problem…
Hey,
I’ve been in and out of game design for a while now, unfortunately. Now I’m back and I’m eager to delve deeper into your system. I’ve got a question for you.
So, out of the box I don’t see any way to control where the “interaction print” appears when you approach something that can be interacted with (that is to say, a Chosen Usable). By default the print string appears directly on top of the actor’s root, whatever that may be. (Usually a Scene Root.) This doesn’t really look very good for more complicated actors, though.
This isn’t a problem, exactly, but aesthetically speaking it rubs me the wrong way. How would I go about controlling this?
Hi Cinebeast,
How I handle this is by implementing the BPI_Usable interface and it’s “CustomNotificationLocation” (I’m not fond of the name, but there it is). The implementation of the ‘print string’ is not meant to be production ready in the sample code, it’s just debug text.
Hmm… I’m afraid I’ll need a little more direction.
I implemented BPI_Usable on one of my actors and set the CustomNotificationLocation like so:
(I have an arrow several units in front of the actor proper where I want the notification to appear.)
But this had no effect. I’m probably missing something obvious.
Oh no, it has no effect by itself. You can call that function on the actor to get the new position where you’ll draw your arrow. The use system doesn’t try to dictate how or where to display the notification, it only gives a means to communicate with the actor that is ‘chosen usable’.