Example #1
0
        // 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
        }
Example #2
0
        // 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();
        }
Example #5
0
        // 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();
        }
Example #6
0
        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);
        }