Utiliser des milliers de scriptable objects comme identifiant pour un système de sauvegarde

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
LenweSeregon
Messages : 14
Inscription : 06 Mai 2020 14:13

Utiliser des milliers de scriptable objects comme identifiant pour un système de sauvegarde

Message par LenweSeregon » 06 Mai 2020 14:35

Hello, je travaille sur un système pour attribuer à chacun de mes composants "Saveable" un identifiant unique qui est un SO contenant principalement un guid et et un string pour mettre des informations supplémentaires que le développeur souhaite spécifier.

Dans le fichier de sauvegarde, j'ai quelque chose comme ça

Code : Tout sélectionner

{
   "guid": "XXXXXXX",
   "data": "YYYYY",
   "information": "La position du joueur"
}
Le champ information n'est pas nécessaire, mais il est utilisé à des fins de débogage pour comprendre facilement ce qui est enregistré.

Pour un projet de grande envergure, il est possible d'avoir des milliers game object à enregistrer, et donc imaginez ce scénario:
  • 1000 gameobjects qui doivent être sauvegardés
  • Chaque gameobject doit enregistrer sa position et sa rotation
Je me retrouve donc avec 1000 * 3 = 3000 instance de SO utilisé uniquement pour représenter l'uniqueness de mes gameobjects.

Je sais que je pourrais utiliser que le GUID mais le but du système est de pouvoir réaffecter le même identifiant SO pour un composant différent

Imaginez que j'ai un joueur qui peut se déplacer entre 2 scènes. La position dans chaque scène doit être sauvegardée indépendamment, mais la santé du joueur reste la même quelle que soit la scène.

Je me retrouve donc avec quelque chose comme ça dans le système d'identification des SO:
  • PlayerIdentifier
  • PlayerIdentifier-PositionScene1
  • PlayerIdentifier-PositionScene2
  • PlayerIdentifier-Health
Le développeur travaillant sur le projet peut facilement décider avec un inspecteur personnalisé s'il souhaite générer un nouvel identifiant (création d'un nouveau SO) ou en choisir un existant pour s'assurer qu'il ne sera pas dupliqué dans le fichier de sauvegarde

Pensez-vous que cette approche est suffisamment robuste et bien conçue? Unity peut-il avoir des problèmes si le projet contient des milliers de SO uniquement à des fins d'identification? Si ce n'est pas la bonne approche, pouvez-vous me donner quelques conseils pour rendre ce système plus élégant et robuste, s'il vous plaît?

Merci d'avoir lu, bonne journée

Répondre

Revenir vers « Unity le logiciel »