Après avoir réalisé que vous ne pouvez pas vraiment utiliser UnityEvents
dans les objets scriptables (ils ne lisent pas correctement les valeurs des variables globales). J'ai dû passer à une autre solution pour où stocker mes boîtes de dialogue.Options de stockage des données dans un préfabriqué
La meilleure solution que j'ai pu trouver était de simplement les stocker dans le préfixe NPC correspondant. C'est vraiment pratique. Cependant, cela laisse un mauvais goût dans ma bouche, il se sent juste mal de stocker des données dans un préfabriqué comme celui-ci. Est-ce une mauvaise pratique? Par exemple, si je devais refactoriser quelque chose dans le DialogObject
, tout serait perdu. Comme je n'arrive pas à stocker UnityEvents avec succès (je ne peux pas les sérialiser comme Json et comme les objets scriptables mentionnés ne semblent pas bien les gérer) Je pense que c'est la seule solution si je veux être capable d'utiliser l'éditeur pour créer des dialogues.
Juste en vérifiant ici d'abord, est-ce stupide? Y a-t-il un autre moyen?
Je suis en train de sauver une List
de ceci:
[System.Serializable]
public class DialogObject {
public List<PageData> conversations = new List<PageData>();
public UnityEvent postEvent; //Invoked on last page of Dialog
}
Merci, j'essaye PersistentMethodName puisque le point entier est de le faire dans l'inspecteur. Pouvez-vous expliquer pourquoi cela ne fonctionne pas dans un objet Scriptable? L'ajout de l'UnityEvent à l'objet Scriptable fonctionne correctement, vous pouvez le modifier dans l'inspecteur comme prévu. Mais toutes les valeurs globales auxquelles vous essayez d'accéder (par exemple 'public int id = 12') renvoie la valeur par défaut. –
Retourne-t-il la valeur par défaut ou la valeur dans l'inspecteur? Vous attendez d'obtenir la valeur donnée dans le script? Essayez de cliquer sur Réinitialiser pour que l'inspecteur revienne aux valeurs de script. – Everts