我的画廊代码出了问题,我的安卓无法识别第20行和第30行.jpg图像的正确文件夹。PC代码导致磁盘细节的原因是完全不同的,如果有人能帮助我,我会非常感激的。
public class Gallery : MonoBehaviour {
public List<Sprite> gallery = new List<Sprite>();
public Image displayImage;
public Button nextImg;
public Button prevImg;
public int i = 0;
void Start ()
{
// var Images = Directory.GetFiles("C:/Users/Bandeira/Downloads/Menu Start/Assets/Sprite/JPG/","*.jpg");
var Images = Directory.GetFiles("file:///" + "/unitypictures/","*.jpg");
Debug.Log(Images);
StartCoroutine(LoadImages(Images));
}
IEnumerator LoadImages(string[] Images)
{
foreach (var path in Images)
{
Debug.Log(path);
using (var uwr = UnityWebRequestTexture.GetTexture("file:///" + path))
// using (var uwr = UnityWebRequestTexture.GetTexture(path))
{
Debug.Log(path);
yield return uwr.SendWebRequest();
if (uwr.result != UnityWebRequest.Result.Success)
{
Debug.Log(uwr.error);
yield break;
}
var tex = DownloadHandlerTexture.GetContent(uwr);
var sprite = Sprite.Create(tex, new Rect(0f, 0f, tex.width, tex.height), new Vector2(0.5f, 0.5f), 50f, 0, SpriteMeshType.FullRect);
gallery.Add(sprite);
uwr.Dispose();
}
yield return null;
}
}
public void BtnNext (){
if(i + 1 < gallery.Count){
i++;
}
displayImage.sprite = gallery[i];
}
public void BtnPrev () {
if (i - 1 > 0){
i--;
}
displayImage.sprite = gallery[i];
}
}发布于 2022-07-15 13:41:59
伙计,我昨天已经告诉过你了。您使用的是绝对路径,它们无法工作,因为对于每个操作系统,它们是不同的。如果你把你的安卓手机连接到你的电脑上,或者安装一个文件管理器,你可以看到不应该有一个叫做"UnityPictures“的文件夹,即使有,你也很难到达那里,因为我相信它们是受设备保护的。答案总是一样的:您可以使用持久化数据路径来保存图像并在以后继续。例如,您可以将它们保存在目录(Application.PersistentDataPath + "UnityPictures")中,并将它们从相同的路径中取回。因此,要弄清楚:您必须创建文件夹并插入这些图像,如果您想下载的话。或者,您也可以从服务器下载它们。因此,您可以编辑它们,添加更多,或删除它们而不需要更新,它将可用于所有设备。
https://stackoverflow.com/questions/72993213
复制相似问题