Unity Android lit xml pour supprimer la nomenclature

Unity conserve le dossier StreamingAssets après avoir empaqueté WebGL, mais le chemin du fichier StreamingAssets ne peut pas être lu à l'aide de Application.streamingAssetsPath. Afin de lire correctement les données du fichier local StreamingAssets, nous devons utiliser la classe UnityWebRequest.

La classe System.Uri, cette classe peut nous aider à mieux construire l'uri, en particulier lors de l'utilisation de chemins locaux, combinée à Path.Combine peut mieux obtenir le chemin Uri. En raison de la différence de plate-forme, le chemin Uri est également différent : Plate-
forme Windows file:///D:/DATA/StreamingAssets/data.json
Plate-forme WebGl http://localhost/StreamingAssets/data.json Plate-forme
Android jar:file : ///data /app/xxx!/assets/data.json
Application de plateforme iOS/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data/Raw

使用Path.Combine径字符串
var uri = new System.Uri(Path.Combine(Application.streamingAssetsPath,
".xml"));
var filePath = new System.Uri(Path.Combine(Application.streamingAssetsPath, "Settings.xml")) ;
Demande UnityWebRequest = UnityWebRequest.Get(filePath);
rendement retour request.SendWebRequest();
if (request.result!=UnityWebRequest.Result.Success)
{ UnityEngine.Debug.LogError("Impossible de télécharger le fichier XML : " + request.error); rupture de rendement ; } else { byte[] responseData = request.downloadHandler.data ; responseData=RemoveBom(responseData);//移除 BOM string xmlData = Encoding.UTF8.GetString(responseData);








XmlDocument doc= nouveau XmlDocument();
doc.LoadXml(xmlData);
XmlNodeList nodeList = doc.GetElementsByTagName("noci");

        foreach (XmlNode node in nodeList)
        {
            if ("ReceivePLC" == node.Attributes["key"].Value)
            {
                receiveIp = node.Attributes["receiveIp"].Value;
                receivePort = int.Parse(node.Attributes["receivePort"].Value);
            }
        }

private byte[] RemoveBom(byte[] data)
{ // La séquence d'octets de la nomenclature UTF-8 est EF BB BF byte[] bom = new byte[] { 0xEF, 0xBB, 0xBF } ;

    if (data.Length >= bom.Length && data[0] == bom[0] && data[1] == bom[1] && data[2] == bom[2])
    {
        byte[] result = new byte[data.Length - bom.Length];
        Array.Copy(data, bom.Length, result, 0, result.Length);
        return result;
    }

    return data;
}

Enregistrer le chemin après la modification xml doc.Save(uri.AbsolutePath)

Supongo que te gusta

Origin blog.csdn.net/weixin_43780907/article/details/130763661
Recomendado
Clasificación