So here's my situation.
My main character uses expressions. Six of them. I set the expressions in dialogs by adding a tag ("[expression:happy]" ect) in front of the line.
In the Speech settings I've checked "Treat carriage returns as separate speech lines" and I use this feature heavily.
It works. But something unexpected happens too. The expression is reset to default every time a new speech line is displayed.
So, when I have an action list with a dialog action and this text...
[expression:scared]What was that?
I better check it.
... the character gets scared, says "What was that", then gets back to normal, then says "I better check it".
It works this way:
[expression:scared]What was that?
[expression:normal]I better check it.
And frankly, I'd expected it to work this way:
[expression:scared]What was that?
[expression:scared]I better check it.
I read the manual carefully, but could find any information if the expressions should be reset at every text line or not.
So what's the answer? Are the feelings temporary or permanent? Is it the way it's supposed to be or a bug or something else?
I can work around it, but would it be possible to add a checkbox setting "reset expression every speech line"?
Comments
The behaviour of lines separated by carriage returns, and lines separated by individual Actions, should be similar. I agree that the resetting of expressions should be optional, however - I shall look into this as part of a future release.
_speaker.ClearExpression ();
(Around line 126). That's essentially what such an option would affect.
I'm a newbie at diving into the .cs files, but removing the line Chris mentioned did not fix the issue for me. It's 100% possible that I'm missing a step in committing the change in the .cs file (I'm just saving the change and testing the build from within Unity).
Obviously not a game-breaker, but would be great to find a fix for this one. Thanks!
For example if a dialogue event plays where my character ends on a thinking portrait, and there is no [expression:Name] tag set for the next interaction, the character will begin with a thinking portrait instead of the default portrait.
It also seems to be ignoring the "switch portrait" action in the actionlist editor now as well. Is that just a side effect of unchecking the "reset character expression" box?
- if a dialogue event plays where my character ends on a thinking portrait, and there is no [expression:Name] tag set for the next interaction, the character will begin with a thinking portrait instead of the default portrait.
What do you mean by 'thinking' portrait? The 'Default portrait graphic'? Please show clear screenshots so I can recreate the problem.- It also seems to be ignoring the "switch portrait" action in the actionlist editor now as well. Is that just a side effect of unchecking the "reset character expression" box?
The "Character: Switch portrait" Action only changes the "Default portrait graphic" - not the textures associated with any of the character's expressions. If you want to manually show the default portrait graphic, use the tag [expression:None].https://i.imgur.com/U1yo9wO.jpg I added my player character's portraits and expression names to the PC Object, with a default portrait graphic at the top (I also added a "default" portrait to the list so I could call it up with the tag system in-text, which you can see at the bottom of my expression list.)
Now, upon starting the game, if I have a dialogue event where I don't set an expression tag first the first line of dialogue, the character will display the proper portraits:
https://i.imgur.com/9oAincO.jpg (the actionscript)
https://i.imgur.com/oVtBE5T.jpg (the first line with the default portrait, with no tag set in text)
https://i.imgur.com/LgHlEh6.jpg (the second line with the 'thinking' portrait)
However, if I have an expression tag set for the first line of dialogue in this exchange, but none set for the second, it will not reset the portrait back to default on that second line:
https://i.imgur.com/hT2CB85.jpg (the actionscript, now with the expression tag in the first event but none set for the second)
https://i.imgur.com/O8Qn0G0.jpg (the first line with the 'thinking' portrait)
https://i.imgur.com/9aboepC.jpg (the second line still using the 'thinking' portrait, even though no expression tag was set in the text)
This will also carry through between different dialogue events. So, here's a script for another hotspot that the player can examine in the same scene: https://i.imgur.com/23kxbqg.jpg
If I examine this object after the previously-used example (where the character ends on the 'thinking' portrait), then when I examine it, the character will use the 'thinking' portrait: https://i.imgur.com/d7Hq10u.jpg
However, if the last-seen portrait was something else, it will mirror that expression instead. So if I don't examine anything beforehand, examining this hotspot uses the default portrait: https://i.imgur.com/iDEqPAI.jpg
Ideally, at least for this instance, it seems like the desired behavior would be to have the game use whatever portrait is set as the default expression in the PC object if there is no expression tag in a text event, rather than continuing to use the last-viewed portrait until it's manually changed via expression tag.
- However, if I have an expression tag set for the first line of dialogue in this exchange, but none set for the second, it will not reset the portrait back to default on that second line:
As expected - that's the effect of unchecking Reset character expression with each line?.I have the portrait and subtitle elements transition off-screen whenever a character is done speaking, sliding left. When the "reset character expression" box is not checked, character portraits will momentarily snap back to the default portrait during the translation off-screen. I've recorded this behavior and uploaded a video:
https://www.dropbox.com/s/ee5b6beeavr3ao7/Unity_Record.mp4?dl=0
You can see here that unchecking the box results in the portrait reverting back momentarily during the transition off-screen, but if I do check it, the portrait transitions off-screen without issue.