using System.Collections;
using System.Xml.Serialization;
public class StreamingAssetBehaviour : MonoBehaviour
StartCoroutine(StreamingAssetRequest.RequestCoroutine(path: "example.json",
print(StreamingAssetConvert.ToString(a));
print(StreamingAssetConvert.DeserializeJson<MySerializable>(a).Name);
public static class StreamingAssetRequest
public static IEnumerator RequestCoroutine(string path, Action<byte[]> success, Action<string> error)
using UnityWebRequest request = UnityWebRequest.Get(Path.Combine(Application.streamingAssetsPath, path));
yield return request.SendWebRequest();
if (request.result == UnityWebRequest.Result.Success)
success?.Invoke(request.downloadHandler.data);
error?.Invoke(request.error);
public static class StreamingAssetConvert
public static string ToString(byte[] data, Encoding encoding) => encoding.GetString(data);
public static string ToString(byte[] data) => ToString(data, Encoding.UTF8);
public static T DeserializeJson<T>(byte[] data, Encoding encoding) => JsonUtility.FromJson<T>(encoding.GetString(data));
public static T DeserializeJson<T>(byte[] data) => DeserializeJson<T>(data, Encoding.UTF8);
public static T DeserializeXml<T>(byte[] data, Encoding encoding) => (T)new XmlSerializer(typeof(T)).Deserialize(new StringReader(encoding.GetString(data)));
public static T DeserializeXml<T>(byte[] data) => DeserializeXml<T>(data, Encoding.UTF8);
public class MySerializable