unity streamingassets datapath application c# json unity3d unity-webgl

c# - datapath - Application.streamingAssetsPath y WebGL build



unity application path (1)

La primera pregunta que tengo por el momento es: ¿qué es esta cadena de "mi archivo" en la línea?

Se supone que es el nombre del archivo. Aunque, falta su nombre de extensión. Deberías agregar eso. Por ejemplo, .txt , .jpg , png ....

¿Qué se supone que debo escribir allí? ¿Es una url? Y si es una url, ¿la url de qué?

Se supone que debes escribir el nombre del archivo con el nombre de la extensión donde está "MyFile" .

Ejemplos de usos:

En su proyecto, crea una carpeta llamada " StreamingAssets ".

Digamos que tiene un archivo llamado "Anne.txt" y el archivo está dentro de "StreamingAssets" . carpeta, esta debería ser tu ruta:

public string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "Anne.txt");

Ahora digamos que la carpeta " Anne.txt " se coloca en una carpeta llamada " Datos " que se encuentra en la carpeta " StreamingAssets ", debería verse así: " StreamingAssets / Data / Anne.txt ".

Tu camino debería ser:

public string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "Data"); filePath = System.IO.Path.Combine(filePath , "Anne.txt");

Eso es. Nada complicado aquí. Luego usa esa cadena de ruta con WWW .

También su if (filePath.Contains("://")) debería ser if (filePath.Contains ("://") || filePath.Contains (":///")) .

EDITAR

Si tiene varios archivos que desea cargar, simplifiqué esa función para que tome el nombre del archivo como parámetro.

IEnumerator loadStreamingAsset(string fileName) { string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, fileName); string result; if (filePath.Contains("://") || filePath.Contains(":///")) { WWW www = new WWW(filePath); yield return www; result = www.text; } else result = System.IO.File.ReadAllText(filePath); }

Ahora, digamos que tiene 3 archivos llamados " Anne.txt ", " AnotherAnne.txt " y " OtherAnne.txt " ubicados en la carpeta " StreamingAssets ", puede cargarlos con el siguiente código:

StartCoroutine(loadStreamingAsset("Anne.txt")); StartCoroutine(loadStreamingAsset("AnotherAnne.txt")); StartCoroutine(loadStreamingAsset("OtherAnne.txt"));

En un proyecto en el que estoy trabajando tengo dos archivos json en el directorio StreamingAssets. El script que los maneja funciona perfectamente en una compilación de PC independiente, pero no funciona en absoluto en un WebGL.

Me sale el "¡No encuentro el archivo!" mensaje según el script:

else if (!File.Exists (filePath)) { Debug.LogError ("Cannot find file!"); }

Me dieron la respuesta para utilizar la clase WWW como se describe en la API de scripting en el sitio de Unity Technologies en esta dirección: https://docs.unity3d.com/ScriptReference/Application-streamingAssetsPath.html

using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "MyFile"); public string result = ""; IEnumerator Example() { if (filePath.Contains("://")) { WWW www = new WWW(filePath); yield return www; result = www.text; } else result = System.IO.File.ReadAllText(filePath); } }

Me encantaría hacerlo, pero soy muy nuevo en la codificación y necesito algunas explicaciones. La primera pregunta que tengo por el momento es: ¿qué es esta cadena de "mi archivo" en la línea?

public string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "MyFile");

¿Qué se supone que debo escribir allí? ¿Es una url? Y si es una url, ¿la url de qué?

¡Estaría muy agradecido si alguien pudiera sostener mi mano y guiarme para que entendiera esto! ¡Gracias!

(Esta es mi primera pregunta aquí, espero no haber cometido ningún error ya que todavía no sé cómo funciona este lugar).