Example #1
0
    IEnumerator GetTexture(string uri, Image img, CallBackSprite callBack)
    {
        using (UnityWebRequest www = UnityWebRequestTexture.GetTexture(uri)) {
            www.SetRequestHeader("Access-Control-Allow-Origin", "*");
            yield return(www.SendWebRequest());

            if (www.isNetworkError || www.isHttpError)
            {
                Debug.Log(www.error);
            }
            else
            {
                Texture2D texture = ((DownloadHandlerTexture)www.downloadHandler).texture;
                img.sprite = callBack(texture);
            }
        }
    }
Example #2
0
        private IEnumerator captureScreenshotCor(
                        CallBackSprite callback,
                        string fileName,
                        string folderName,
                        bool fileOverWrite)
        {
            string folderPath = this.getFolderPath(folderName);
            #if UNITY_IOS
                // iOSだとiCloudにバックアップを取りすぎるとリジェクトされる為,バックアップ属性指定フォルダのバックアップ属性を外す.
                Device.SetNoBackupFlag( folderName );
            #endif
            fileName += PICTURE_EXTENSION;
            string filePath = folderPath + fileName;

            yield return new WaitForEndOfFrame();
            // 撮影.
            Texture2D tex = new Texture2D(Screen.width, Screen.height, TextureFormat.ARGB32, false);
            tex.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0, false);
            tex.Apply();

            // キャプチャ用の情報を作成.
            string captureID = this.getNowTimeString();
            CaptureInfo info = new CaptureInfo(filePath, captureID, tex.EncodeToPNG());
            this.captureList.Add(captureID, info);

            // コールバックでスプライトを先に渡す.
            Sprite spr = Sprite.Create(tex, new Rect(0, 0, Screen.width, Screen.height), Vector2.zero);
            callback(spr, filePath);

            // 別スレッドを作成しそっちで保存.
            Thread thread = new Thread(new ParameterizedThreadStart(this.saveCaptureImageThd));
            thread.Start(captureID);
            while (!this.captureList[captureID].IsFinished)
            {
                yield return new WaitForSeconds(0);
            }

            yield return null;
        }
Example #3
0
 // スクリーンショットを撮影し,コールバクにSpriteと保存先パスを返す.
 // 保存先フォルダが存在しなければ新たに作成,フォルダの指定が無ければ[プロダクト名Images]フォルダを作成.
 // 同名ファイルがある場合に上書きするかも聞く.
 public void captureScreenshot(
                 MonoBehaviour mono,
                 CallBackSprite callback,
                 string fileName,
                 string folderName = "",
                 bool fileOverWrite = true)
 {
     mono.StartCoroutine(captureScreenshotCor(callback, fileName, folderName, fileOverWrite));
 }