1) Hi, thank you for quick response. And sorry for blaming DialogueSys, I have just forgotten that I have one more customization of it

So EventSystem inspector have shown me that it is Response Button Template will be selected as I have own list to support joystick etc. My code relied that this object should be disabled and just used this:
Code: Select all
responseButtons.Clear();
foreach (Transform button in transform) {
if (button.gameObject.activeSelf) {
responseButtons.Add(button.GetComponent<Button>());
}
}
I have just added some name check and everything works as before
Code: Select all
responseButtons.Clear();
foreach (Transform button in transform) {
if (button.gameObject.activeSelf && button.gameObject.name != "Response Button Template") {
responseButtons.Add(button.GetComponent<Button>());
}
}
Probably just Script Order changed for some reason and my custom code now was executed before template response was disabled. Anyways it works with this change just as it worked in 2.2.9
2) DeselectPreviousOnPointerEnter works nicely and indeed fixes one possible bug that was present in my setup: it was possible to have two options selected at same time, if moving mouse after up/down selection. No mouse selection deselects previous. Great point, thank you.
-------------
3) Another small question to avoid makng microthreads: After update I have some Null Pointer Exception in CharacterInfo.RegisterActorTransform(...). As I can see in git changes some code was added in the end of method:
Code: Select all
public static void RegisterActorTransform(string actorName, Transform actorTransform)
{
...
+ // Also update active conversations' caches:
+ var actor = DialogueManager.masterDatabase.GetActor(actorName);
+ if (actor != null)
+ {
+ foreach (var activeConversations in DialogueManager.instance.activeConversations)
+ {
+ activeConversations.conversationModel.OverrideCharacterInfo(actor.id, actorTransform);
+ }
+ }
+}
Unfortunately my game is organized so that player (with dialogue sys component) and level itself are two separate scene. And it is both possible. Start player scene and the in game use Load to load a scene. But it is also possible just to start level without player (nice option for dev) and then load dialogue system with player into it. (I am not a big fan of patching src of third party code, but in this case probably just to avoid 100+ error messages in console could be a good reason).
The problem I just do not have masterDatabase and all my NPCs have for some reason optional DialogueActor that calls RegisterActorTransform OnEnable().
I just added a null check there. My only question, it is some cache that will be updated. Is it safe or at least not very critical to ignore this on scene start for NPCs?