Hi,
I just picked up the dialog system and so far it has been rather easy to setup.
Rather than stumble around the system a bit for a few weeks I thought I would ask for a few recommendations.
What is the best way to facilitate a party based rpg? My game has 6 characters and each character could potentially take part in a conversation. Is there a recommended way to handle this? I could be wrong, but it looks like most of the examples are based around a solo character game.
At the moment, I'm using the Sci-fi Standard Dialog UI prefab with a few modifications for portraits, but I noticed that the PC Subtitle Panel doesn't ever show, even when I have PC Subtitle Panel subtitles on it gets disabled. Ideally I'd like to show a picture of the PC who is talking.
Another issue I noticed after having integrated the system into my game is that it doesn't set the UI as the last sibling. That means it appears underneath all my other game UI (under the DoNotDestoryOnLoad scene).
Lastly, is there a recommended way to stop the system from using DoNotDestoryOnLoad? My entire game doesn't use it.
I tried the option under Other Settings but it doesn't prevent it from creating that scene.
Thanks
Kevin.
A few questions / recommendations.
Re: A few questions / recommendations.
Hi Kevin,
It works just fine with a party of PCs. Define each one as an Actor in the Dialogue Editor's Actors section, and tick their Is Player checkboxes.
- Tick the Dialogue Manager's Subtitle Settings > Show PC Subtitles During Line. This will show the PC's line in the PC Subtitle Panel. You may want to untick Skip PC Subtitle After Response Menu.
- To show the PC's portrait in the response menu itself, make sure UI elements are assigned to the Standard UI Menu Panel's PC Image and PC Name fields. This gets a little tricky with a party of PCs; games with multiple PCs usually don't do this.
- Untick Input Settings > Always Force Response Menu if you want the PC to automatically show its line if only one line is currently available, instead of showing a response menu with a single choice.
1. Increase the sort order of the Dialogue Manager's Canvas so it's on top of your other canvases.
2. Or add an instance of the dialogue UI prefab to your scene at design time, and assign it to the Dialogue Manager's Dialogue UI field in place of the prefab. This lets you set the sibling order within the canvas.
That said, if this isn't an issue, then:
1. Untick the Dialogue Manager's Other Settings > Don't Destroy On Load checkbox.
2. Untick the Input Device Manager's Singleton checkbox.
3. If you've added a Save System component, remove it. Put it on a separate GameObject. This GameObject absolutely does need to survive scene changes to be able to carry over saved data. It requires DontDestroyOnLoad.
If you allow the Dialogue Manager to survive scene changes, you can still have a Dialogue Manager in every scene. Just keep in mind that when coming from a previous scene, the previous scene's Dialogue Manager will survive and replace the Dialogue Manager in the new scene.
Thanks for using the Dialogue System!
It works just fine with a party of PCs. Define each one as an Actor in the Dialogue Editor's Actors section, and tick their Is Player checkboxes.
You can tell the Dialogue System to work a few different ways with PCs. (It's very flexible in this regard.)kev00 wrote: ↑Tue Jul 30, 2019 1:55 pmAt the moment, I'm using the Sci-fi Standard Dialog UI prefab with a few modifications for portraits, but I noticed that the PC Subtitle Panel doesn't ever show, even when I have PC Subtitle Panel subtitles on it gets disabled. Ideally I'd like to show a picture of the PC who is talking.
- Tick the Dialogue Manager's Subtitle Settings > Show PC Subtitles During Line. This will show the PC's line in the PC Subtitle Panel. You may want to untick Skip PC Subtitle After Response Menu.
- To show the PC's portrait in the response menu itself, make sure UI elements are assigned to the Standard UI Menu Panel's PC Image and PC Name fields. This gets a little tricky with a party of PCs; games with multiple PCs usually don't do this.
- Untick Input Settings > Always Force Response Menu if you want the PC to automatically show its line if only one line is currently available, instead of showing a response menu with a single choice.
This is by design, so you have full control over the sort order. There are two ways to tweak this:
1. Increase the sort order of the Dialogue Manager's Canvas so it's on top of your other canvases.
2. Or add an instance of the dialogue UI prefab to your scene at design time, and assign it to the Dialogue Manager's Dialogue UI field in place of the prefab. This lets you set the sibling order within the canvas.
Are you sure you need to stop it from using DontDestroyOnLoad? If you don't allow the Dialogue Manager to survive scene changes, then you'll lose all your data (e.g., quest states & variable values) when you change scenes, since the data is stored on the Dialogue Manager.
That said, if this isn't an issue, then:
1. Untick the Dialogue Manager's Other Settings > Don't Destroy On Load checkbox.
2. Untick the Input Device Manager's Singleton checkbox.
3. If you've added a Save System component, remove it. Put it on a separate GameObject. This GameObject absolutely does need to survive scene changes to be able to carry over saved data. It requires DontDestroyOnLoad.
If you allow the Dialogue Manager to survive scene changes, you can still have a Dialogue Manager in every scene. Just keep in mind that when coming from a previous scene, the previous scene's Dialogue Manager will survive and replace the Dialogue Manager in the new scene.
Re: A few questions / recommendations.
thank you so much for your quick response!
FYI, in my game I don't ever change the entire scene. I load and unload additive scenes.
I'm unloading and loading them in threads via.
asyncLoad = SceneManager.LoadSceneAsync("Level2", LoadSceneMode.Additive);
thus far I've managed to avoid the unique ugliness of DontDestroyOnLoad.
FYI, in my game I don't ever change the entire scene. I load and unload additive scenes.
I'm unloading and loading them in threads via.
asyncLoad = SceneManager.LoadSceneAsync("Level2", LoadSceneMode.Additive);
thus far I've managed to avoid the unique ugliness of DontDestroyOnLoad.
Re: A few questions / recommendations.
In that case it's fine to turn it off. However, if you use the Dialogue System's save system, it will set the Save System component's GameObject to DontDestroyOnLoad. Also, if you use the save system, tick your Saver components' Restore State On Start. This tells them to restore their state (from the data saved in the save system) when the scene is additively loaded.