Add support for images in dialogue windows (#19)

- Extend editor nodes with custom DialogueContent data type that holds either image or text
- Extend the dialogue importer to correctly process the new content into updated RuntimeDialogue content
- Update SpeechBubble to be able to display either text or image
- Add a custom property drawer for the DialogueContent to allow easy switching in graph authoring

Co-authored-by: Michal Pikulski <michal@foolhardyhorizons.com>
Reviewed-on: #19
This commit is contained in:
2025-10-08 09:34:58 +00:00
parent 7b949c5cb8
commit 3807ac652c
19 changed files with 1128 additions and 461 deletions

View File

@@ -40,14 +40,14 @@ MonoBehaviour:
- __option_DialogueLineType
- __option_NoLines
- RequiredPuzzleStep
- DefaultDialogueLine
- LoopThroughDefaultLines
- DefaultDialogueContent
m_ValueList:
- rid: 4008004731853340754
- rid: 4008004731853340755
- rid: 4008004731853340756
- rid: 4008004731853340757
- rid: 4008004731853340758
- rid: 7545629632211976319
m_InputPortInfos:
expandedPortsById:
m_KeyList: []
@@ -82,10 +82,6 @@ MonoBehaviour:
type: {class: 'Constant`1[[PuzzleStepSO, AppleHillsScripts]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 11400000, guid: ea383d1dee861f54c9a1d4f32a2f6afc, type: 2}
- rid: 4008004731853340757
type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: That Lawnmower is out of control!
- rid: 4008004731853340758
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
@@ -125,6 +121,41 @@ MonoBehaviour:
m_PortDirection: 1
m_PortOrientation: 0
m_Title: in
- rid: 7545629632211976315
type: {class: 'Constant`1[[Dialogue.DialogueContent, AppleHillsScripts]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value:
_contentType: 0
_text:
_image: {fileID: 0}
- rid: 7545629632211976316
type: {class: 'Constant`1[[Dialogue.DialogueContent, AppleHillsScripts]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value:
_contentType: 0
_text:
_image: {fileID: 0}
- rid: 7545629632211976317
type: {class: 'Constant`1[[Dialogue.DialogueContent, AppleHillsScripts]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value:
_contentType: 0
_text:
_image: {fileID: 0}
- rid: 7545629632211976318
type: {class: 'Constant`1[[Dialogue.DialogueContent, AppleHillsScripts]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value:
_contentType: 0
_text:
_image: {fileID: 0}
- rid: 7545629632211976319
type: {class: 'Constant`1[[Dialogue.DialogueContent, AppleHillsScripts]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value:
_contentType: 0
_text:
_image: {fileID: 0}
- rid: 7772910664224079872
type: {class: GraphModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor}
data:
@@ -351,17 +382,17 @@ MonoBehaviour:
m_KeyList:
- __option_DialogueLineType
- __option_NoLines
- DefaultDialogueLine2
- LoopThroughDefaultLines
- DefaultDialogueLine1
- DefaultDialogueLine3
- DefaultDialogueContent1
- DefaultDialogueContent2
- DefaultDialogueContent3
m_ValueList:
- rid: 7772910664224079887
- rid: 7772910664224079888
- rid: 7772910664224079894
- rid: 7772910664224079890
- rid: 7772910664224079893
- rid: 7772910664224079895
- rid: 7545629632211976315
- rid: 7545629632211976316
- rid: 7545629632211976317
m_InputPortInfos:
expandedPortsById:
m_KeyList: []
@@ -431,19 +462,6 @@ MonoBehaviour:
m_PortDirection: 1
m_PortOrientation: 0
m_Title: in
- rid: 7772910664224079893
type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: Ok Guys! Let's get these birds out in the open!
- rid: 7772910664224079894
type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: Place things the Birds might like in their nests.
- rid: 7772910664224079895
type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: I guess what you find in th enests can give you a clue of what they
like?
- rid: 7772910664224079896
type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor}
data:
@@ -464,13 +482,13 @@ MonoBehaviour:
m_KeyList:
- __option_DialogueLineType
- __option_NoLines
- DefaultDialogueLine
- LoopThroughDefaultLines
- DefaultDialogueContent
m_ValueList:
- rid: 7772910664224079897
- rid: 7772910664224079898
- rid: 7772910664224079899
- rid: 7772910664224079900
- rid: 7545629632211976318
m_InputPortInfos:
expandedPortsById:
m_KeyList: []
@@ -501,10 +519,6 @@ MonoBehaviour:
type: {class: 'Constant`1[[System.Int32, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 1
- rid: 7772910664224079899
type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: Go on, get them out of their hiding spots.
- rid: 7772910664224079900
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data: