Salut, je bloque sur quelque chose.
Donc pour poser le contexte:
Je développe un module de localisation (traduction), et j'aimerai qu'il soit assez pratique. J'aimerai passer par des scriptables Object et y "drag and drop" mes fichiers langues (format xml). Jusque là pas de soucis. L'objectif est de ne pas a avoir à stocker un chemin d'accès.
Donc j'aimerai lire ces fichiers directement avec leur référence et non via leur "path". En mode éditeur il y a la fonction "AssetDatabase.GetAssetPath" à la limite qui me permet de récupérer ce "path" à la volé, mais en runtime je n'ai pas trouvé d'équivalent. De plus les fonctions pour ouvrir les fichier demande toujours le path en argument...
Sinon je peux me débrouiller pour détecter lorsque mon champs est modifié dans l'éditeur et à ce moment là faire un "AssetDatabase.GetAssetPath" et le stocker. Le soucis est que si je change l'emplacement de ce fichier dans le projet le chemin d'accès devient faux (peut on détecter dans un script un changement dans le projet?).
J'espère avoir été clair...
Avez vous des pistes?
Merci par avance!
[RESOLU][MY -AL] Ouvrir un fichier sans le "path" et en "Runtime"
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :
Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé
Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie
Exemple :
[DB-RS] Mouvement perso multijoueur
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :
Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé
Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie
Exemple :
[DB-RS] Mouvement perso multijoueur
[RESOLU][MY -AL] Ouvrir un fichier sans le "path" et en "Runtime"
Dernière édition par DevAmat le 15 Oct 2018 20:47, édité 1 fois.
Re: [MY -AL] Ouvrir un fichier sans le "path" et en "Runtime"
Je ne sais pas si ça t'aidera, mais perso je passe pas mal par le dossier où est installer le jeu, du coup ça donne ceci où que soit installer le jeu :
Le datapath est une variable interne qui donne automatiquement le répertoire data de ton jeu. Il y a sans doute d'autres répertoires accessible facilement comme ça, faut fouiller dans la doc ou l'autocomplétion de visual studio pour voir ce qu'on a sous la mains
Code : Tout sélectionner
if (File.Exists(Application.dataPath + "NomDuFichier"))
{}
Re: [MY -AL] Ouvrir un fichier sans le "path" et en "Runtime"
Oui merci, mais dans ce cas tu es toujours obligé de donner une string.
Je pense avoir trouvé ma solution. il y a une class qui convient à priori. Je peux l'utiliser en Build.
Je donne l'exemple:
Du coup avec ça, normalement je peux déplacer mes fichiers dans le projet sans devoir réassigner quoi que ce soit. Je dois encore tester plus cette class...
ps: ce code est temporaire...
Je pense avoir trouvé ma solution. il y a une class qui convient à priori. Je peux l'utiliser en Build.
Je donne l'exemple:
Code : Tout sélectionner
using UnityEngine;
using System.IO;
using System.Xml;
public class LoaderXML: MonoBehaviour
{
public TextAsset xlmFile; // La référence de mon fichier langue
void Start()
{
OpenXML(xlmFile);
}
void OpenXML(TextAsset file)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(new StringReader(file.text)); // La class magique
// read xml
foreach (XmlNode node in xmlDoc)
{
string root = node.Name;
Debug.Log(root); // draw root element
foreach (XmlElement element in node)
{
string el = element.Name;
Debug.Log(el); // draw element
}
}
}
}
ps: ce code est temporaire...