Unitystation-fork / Unitystation-Tutorial_Standalone

Tutorial for Unitystation
https://unitystation.org
GNU Affero General Public License v3.0
0 stars 3 forks source link

gestion des XML #107

Open Fr-Dae opened 1 year ago

Fr-Dae commented 1 year ago

es-ce possible d'optimisé le script precedent ?

Oui, il y a plusieurs façons d'optimiser le script précédent. Voici quelques suggestions :

Utiliser des dictionnaires au lieu de tableaux de hachage: Les dictionnaires sont plus rapides pour les opérations de recherche et de mise en correspondance de clé-valeur.

Eviter les appels à Debug.LogWarning dans la boucle: Cela peut réduire considérablement les performances si le nombre d'appels à Debug.LogWarning est élevé.

Eviter de faire un appel à GetEnumerator à chaque itération de la boucle: Il est plus efficace de stocker le IEnumerator dans une variable en dehors de la boucle.

Utiliser une expression ternaire pour retourner la valeur: Cela peut simplifier le code et le rendre plus lisible.

Voici un exemple d'optimisation :

using System.Collections.Generic;
using System.IO;
using System.Xml;
using UnityEngine;

public class Lang_Bot
{
    private Dictionary<string, string> strings;

    public Lang_Bot(string path, string language)
    {
        SetLanguage(path, language);
    }

    public void SetLanguage(string path, string language)
    {
        var xml = new XmlDocument();
        xml.Load(path);

        strings = new Dictionary<string, string>();
        XmlElement element = xml.DocumentElement[language];
        if (element != null)
        {
            IEnumerator elemEnum = element.GetEnumerator();
            while (elemEnum.MoveNext())
            {
                XmlElement xmlItem = (XmlElement)elemEnum.Current;
                strings[xmlItem.GetAttribute("name")] = xmlItem.InnerText;
            }
        }
        else
        {
            Debug.LogWarning(language + " doesn't exist");
        }
    }

    public string GetString(string name) => strings.TryGetValue(name, out var value) ? value : "";
}
Fr-Dae commented 1 year ago

/UnityStation-Tutorial/Assets/Scripts/TutorialScript/Lang_Bot.cs

Fr-Dae commented 1 year ago

/home/dae/GIT/Unitystation-Tutorial_Standalone/Tools/Languages_Files