// StreamingAssetsからファイルテキストをロードする public static IEnumerator CoLoad( CoroutineReturnValue <string> ret, string pathInStreamingAssets, bool overrideEnabled = true) { #if UNITY_IOS // iOS13+iPhoneXで死ぬので回避を試みる try { var text = System.IO.File.ReadAllText(System.IO.Path.Combine(Application.streamingAssetsPath, pathInStreamingAssets)); ret.Succeed(text); } catch (System.Exception e) { ret.Fail(e); } yield break; #else string url = MakeUrl(pathInStreamingAssets, overrideEnabled); var req = UnityWebRequest.Get(url); yield return(req.SendWebRequest()); Debug.Assert(req.isDone); if (req.error != null) { ret.Fail(new System.IO.FileLoadException(url)); } else { ret.Succeed(req.downloadHandler.text); } req.Dispose(); #endif }
// StreamingAssetsからテクスチャをロードする public static IEnumerator CoLoad( CoroutineReturnValue <Texture2D> ret, string pathInStreamingAssets, bool overrideEnabled = true, bool readable = false) { string url = MakeUrl(pathInStreamingAssets, overrideEnabled); var req = new UnityWebRequest(url); req.method = UnityWebRequest.kHttpVerbGET; var handler = new DownloadHandlerTexture(readable); req.downloadHandler = handler; yield return(req.SendWebRequest()); if (req.error != null) { ret.Fail(new System.IO.FileLoadException(url)); } else { ret.Succeed(handler.texture); } req.Dispose(); }
// StreamingAssetsからファイルバイナリをロードする public static IEnumerator CoLoad( CoroutineReturnValue <byte[]> ret, string pathInStreamingAssets, bool overrideEnabled = true) { string url = MakeUrl(pathInStreamingAssets, overrideEnabled); var req = UnityWebRequest.Get(url); req.SendWebRequest(); yield return(req); if (req.error != null) { ret.Fail(new System.IO.FileLoadException(url)); yield break; } ret.Succeed(req.downloadHandler.data); }
// StreamingAssetsからファイルテキストをロードする public static IEnumerator CoLoad( CoroutineReturnValue <string> ret, string pathInStreamingAssets, bool overrideEnabled = true) { string url = MakeUrl(pathInStreamingAssets, overrideEnabled); var req = UnityWebRequest.Get(url); yield return(req.SendWebRequest()); Debug.Assert(req.isDone); if (req.error != null) { ret.Fail(new System.IO.FileLoadException(url)); } else { ret.Succeed(req.downloadHandler.text); } req.Dispose(); }
// StreamingAssetsからAudioClipをロードする public static IEnumerator CoLoad( CoroutineReturnValue <AudioClip> ret, string pathInStreamingAssets, bool overrideEnabled = true, bool readable = false) { string url = MakeUrl(pathInStreamingAssets, overrideEnabled); var req = new UnityWebRequest(url); req.method = UnityWebRequest.kHttpVerbGET; AudioType type = AudioType.UNKNOWN; var ext = System.IO.Path.GetExtension(url).ToLower(); switch (ext) { case ".wav": type = AudioType.WAV; break; case ".wave": type = AudioType.WAV; break; case ".ogg": type = AudioType.OGGVORBIS; break; case ".mp3": type = AudioType.MPEG; break; case ".aiff": type = AudioType.AIFF; break; } var handler = new DownloadHandlerAudioClip(url, type); req.downloadHandler = handler; yield return(req.SendWebRequest()); if (req.error != null) { ret.Fail(new System.IO.FileLoadException(url)); } else { ret.Succeed(handler.audioClip); } req.Dispose(); }
public static IEnumerator CoGetScreenshot( CoroutineReturnValue <byte[]> retVal, bool withAlpha = true, int waitFrameCount = 0, // デバグUIを消すなどがすぐに済まない場合、ここにフレーム数を指定 FileType fileType = FileType.Png) { for (int i = 0; i < waitFrameCount; i++) { yield return(null); } yield return(new WaitForEndOfFrame()); var width = Screen.width; var height = Screen.height; var format = withAlpha ? TextureFormat.RGBA32 : TextureFormat.RGB24; var texture = new Texture2D(width, height, format, mipChain: false); texture.ReadPixels(new Rect(0, 0, width, height), 0, 0); var bytes = ConvertReadableTextureToFile(texture, fileType); retVal.Succeed(bytes); }