DialogManager_ConvList
See - Conversation ScriptableObjects
Required: Import: ScriptableObject Factory Package
Link: Unity Package with SimpleDialog Prefab
Link: Unity Package with Prefab_Dialog_wImage Links, Instructions
To use the prefabs linked above, you'll need to add the DialogManager.cs script to the top-level panel, and you'll need to populate the script-component in the inspector with a scriptable object: ConversationList.
Goal: You will create a new DialogPrefab_wImg, which includes an image, and uses the DialogManager.cs script component, which uses a ConversationList scriptable object. Follow steps detailed below:
Create new version of DialogPrefab :DialogPrefab_wImg
To be used with DialogManager.cs (which uses ScriptableObjects )
Create a duplicate GameObject in the hierarchy, this is created from the the original DialogPrefab.
Give the new prefab a unique name: DialogPrefab_wImg.
Disable or Delete the original DialogPrefab GameObject in the hierarchy panel. (so you don't get confused)
Remove the SimpleDialog.cs script component, this will be replaced by the DialogManager.cs script component once the script has been created.
Use the RectTransform tool to resize the DialogPanel, DialogText, NextButton as necessary to make room for your speakerImage.
Select the top-level, parent-panel, and add a UI-Image as a child. The image below shows that the SpeakerImg is the bottom gameObject for the prefab, it is a sibbling to the other 2 Panels: DialogPanel, SpeakerPanel. Note that the SpeakerImg is the 5th child image which has index [4], because all panels and buttons also have an image component.
Adjust the Rect-Transform Component of this new image gameObject, to set the anchors so the Image is aligned to the left-side of the panel. Either Middle or Bottom is fine. The image below shows middle-left anchor set.(see image below)
Adjust the Image (Script) component so that PreserveAspect checkbox is selected as true.
Select an Image from Assets (Script) by selecting an image from your assets folder that is sized to match your speaker images, speaker images should have similar aspect ration and scaling. Adjust the image as necessary, larger, smaller, etc.
Create the DialogManager.cs script [see below] and attach to the DialogPrefab_wImg gameObject.
Drag to Resources folder to create a new Prefab for this newly configured GameObject.
NextPanelToOpen
The DialogManager script has a public reference variable that can be set in the Inspector allows for the nextPanelToOpen to be populated. After all of the dialog entries has been displayed, the dialogPanel is closed, and then the nextPanelToOpen will be opened. If not populated, no error will occur because the code first checks to see if that variable contains a valid object reference (memory address).
Add the linked script to the DecisionPanel so it will stay closed at the start of the scene, if desired Hide_Show_Panel Script
Coroutines
A coroutine is like a function that has the ability to pause execution and return control to Unity but then to continue where it left off on the following frame. In C#, a coroutine is declared as shown below:
It is essentially a function declared with a return type of IEnumerator and with the yield return statement included somewhere in the body. The
yield return null;
code is the point at which execution will pause and be resumed the following frame. To set a coroutine running, you need to use the StartCoroutine function: In the DialogManager StartCoroutine is executed each time the GetNextDialog( ) Method is Executed:
OpenDialogBtn
The OpenDialogBtn public obj-reference variable in the Inspector should be populated if a button will be used to open the dialog. Otherwise, the ShowOnStart checkbox in the Inspector should be selected, it will make the panel visible at the beginning of the scene.
For example, set OpenDialogBtn to a StartDialog Button
Includes public CanvasGroup nextPanelToOpen;
DialogManager.cs
Last updated