我对C#和Unity相当陌生,所以在这里有一个小问题。我正在开发某种“ photobooth应用程序”,这使图库成为了很大一部分。但是,我设法整理出截图的一部分并显示给他们,我的问题是我似乎无法弄清楚如何从图库中删除图片(我的意思是,在应用程序内部)。
到目前为止,我正在使用此代码(只是为了使您有所了解),但是此位会擦除所有拍摄的照片,而不仅仅是当前显示的照片。
tring path = Application.persistentDataPath;
DirectoryInfo dir = new DirectoryInfo(path);
FileInfo[] info = dir.GetFiles("*.png");
foreach (FileInfo f in info)
{
File.Delete(f.FullName);
}
我不知道是否有帮助,但这是我用来获取和保存屏幕截图的代码:
yield return new WaitForEndOfFrame();
string timeStamp = System.DateTime.Now.ToString("dd-MM-yyyy-HH-mm-ss");
string fileName = "Screenshot" + timeStamp + ".png";
string pathToSave = fileName;
ScreenCapture.CaptureScreenshot(pathToSave);
yield return new WaitForEndOfFrame();
然后,我用来在图库中显示它们的那个
public class ScreenShotPreview : MonoBehaviour
{
[SerializeField]
GameObject Panel;
[SerializeField]
string sceneName;
string[] files = null;
int whichScreenShotIsShown = 0;
void Start()
{
files = Directory.GetFiles(Application.persistentDataPath + "/", "*.png");
if (files.Length > 0)
{
GetPictureAndShowIt();
}
}
void GetPictureAndShowIt()
{
string pathToFile = files[whichScreenShotIsShown];
Texture2D texture = GetScreenshotImage(pathToFile);
Sprite sp = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
Panel.GetComponent<Image>().sprite = sp;
}
Texture2D GetScreenshotImage(string filePath)
{
Texture2D texture = null;
byte[] fileBytes;
if (File.Exists(filePath))
{
fileBytes = File.ReadAllBytes(filePath);
texture = new Texture2D(2, 2, TextureFormat.RGB24, false);
texture.LoadImage(fileBytes);
}
return texture;
}
public void NextPicture()
{
if (files.Length > 0)
{
whichScreenShotIsShown += 1;
if (whichScreenShotIsShown > files.Length - 1)
whichScreenShotIsShown = 0;
GetPictureAndShowIt();
}
}
public void PreviousPicture()
{
if (files.Length > 0)
{
whichScreenShotIsShown -= 1;
if (whichScreenShotIsShown < 0)
whichScreenShotIsShown = files.Length - 1;
GetPictureAndShowIt();
}
}
我希望这有意义吗?预先谢谢你!
TLDR;无法弄清楚如何删除图库中当前显示的图片。
答案 0 :(得分:1)
您的文件路径存储在++(*x);
变量中。 string[] files
变量是确定当前正在显示哪个路径的当前索引。这两个变量在whichScreenShotIsShown
脚本中声明。
因此,要删除当前文件,您将执行以下操作:
ScreenShotPreview