Hilf mir Jungs, ich erstelle Augmented Reality (Einheit + Vuforia). Ich habe Knopf für Screenshot-Bildschirm, ist Arbeit aber Speicherort auf (/Data/Data/com.companyname.gamename/Files). Wie ändere ich den Ordner? (Speicher/emuliert/0/DCIM/Kamera /).Q: Auf Android-Handy, wie man Ordner wechseln
using UnityEngine;
using System.Collections;
using System.IO;
public class SnapshotShare : MonoBehaviour
{
private AndroidUltimatePluginController androidUltimatePluginController;
Camera mainCamera;
RenderTexture renderTex;
Texture2D screenshot;
Texture2D LoadScreenshot;
int width = Screen.width;
int height = Screen.height;
string fileName;
string screenShotName = "Animal3D_";
void Start()
{
androidUltimatePluginController = AndroidUltimatePluginController.GetInstance();
}
public void Snapshot()
{
StartCoroutine (CaptureScreen());
}
public IEnumerator CaptureScreen()
{
yield return null;
GameObject.Find ("Canvas").GetComponent<Canvas>().enabled = false;
yield return new WaitForEndOfFrame();
if (Screen.orientation == ScreenOrientation.Portrait || Screen.orientation == ScreenOrientation.PortraitUpsideDown) {
mainCamera = Camera.main.GetComponent<Camera>();
renderTex = new RenderTexture (height, width, 24);
mainCamera.targetTexture = renderTex;
RenderTexture.active = renderTex;
mainCamera.Render();
screenshot = new Texture2D (height, width, TextureFormat.RGB24, false);
screenshot.ReadPixels (new Rect (0, 0, height, width), 0, 0);
screenshot.Apply();
RenderTexture.active = null;
mainCamera.targetTexture = null;
}
if (Screen.orientation == ScreenOrientation.LandscapeLeft || Screen.orientation == ScreenOrientation.LandscapeRight) {
mainCamera = Camera.main.GetComponent<Camera>();
renderTex = new RenderTexture (width, height, 24);
mainCamera.targetTexture = renderTex;
RenderTexture.active = renderTex;
mainCamera.Render();
screenshot = new Texture2D (width, height, TextureFormat.RGB24, false);
screenshot.ReadPixels (new Rect (0, 0, width, height), 0, 0);
screenshot.Apply(); //false
RenderTexture.active = null;
mainCamera.targetTexture = null;
}
File.WriteAllBytes (Application.persistentDataPath + "/" +screenShotName+Time.frameCount+".jpg", screenshot.EncodeToJPG());
GameObject.Find ("Canvas").GetComponent<Canvas>().enabled = true;
}
public void LoadImage()
{
string path = Application.persistentDataPath + "/" + screenShotName;
byte[] bytes;
bytes = System.IO.File.ReadAllBytes(path);
LoadScreenshot = new Texture2D(1,1);
LoadScreenshot.LoadImage(bytes);
GameObject.FindGameObjectWithTag ("Picture").GetComponent<Renderer>().material.mainTexture = screenshot;
}
public void close()
{
Application.Quit();
}
}
Danke, seine gearbeitet. Aber das Bild erscheint nicht in meiner Galerie, wie kann es erscheinen? Stimmt etwas nicht mit dem Format des Bildes? (das Bildformat, das ich verwendet habe, ist PNG) –
Ich denke, es ist ein Thema für eine andere Frage;) –