You surely do not want to copy dialogue strings one by one into who knows how many arrays!
Wouldn’t it be easier to use DataTables, they’re a breeze to set up.
- your dialogue lines could have identifiers
- editable in a spreadsheet or in the editor
- the dialogue lines can be associated with images/sounds
- you can still load a chunk of the DataTable into an array for use in any particular conversation, if needed
- can be updated quickly
- easier to localise
More info here: Data Driven Gameplay Elements in Unreal Engine | Unreal Engine 5.3 Documentation. Ignore the c++ parts, this can be done in blueprints.
You’d need to plan ahead a little more and design a struct to hold the data (in the editor):
- identifier/line number, or both, or more
- actor speaking
- the string itself
- next branching line/conversation chunk
- visual asset
- sound asset
- more, depending on the complexity of you game
The basic workflow:
- have the text in the spreadsheet rows with columns reflecting the above-mentioned data struct (any spreadsheet that can export to *.csv.)
- export it to csv format
- create a DataTable in the editor
- import the csv
You will need to blueprint a manager that handles what is displayed when, ofc.
Oh, and yeah, you’ll need widgets for that.
edit:
yeah, noticed it as well, use *LastIndex *instead, good practice.
Also, noticed that someone mentioned the DataTables already… not enough sleep, oh well.