Мне нужна ваша помощь, поэтому вчера я хочу портировать свою игру в iOS, это не мой первый портирование, предыдущая версия всегда порт успешно, но не сейчасUnauthorizedAccessException: доступ к пути [iOS/Unity3D]
Я использую Unity 5.3.4 и 5.3.5 с Xcode 7.3 на El Capitan, его успешно компилируют из XCode, но весь объект, который я инициализирую и создаю в начале сцены, не будет отображаться в игре , я не знаю, что случилось с ним, поскольку Там нет ошибки на Unity или XCode сам
но из журналов, я подозреваю, его из-за этого
UnauthorizedAccessException: доступ к пути «/var/mobile/Containers/Data/Application/280DC265-ABD8-41A3-8B87-74D09910FB24/Documentstemp.gjk» отклонен. в System.IO.FileStream..ctor (путь System.String, режим FileMode, доступ FileAccess, общий ресурс FileShare, Int32 bufferSize, логические анонимные, параметры FileOptions) [0x00000] в: 0 в System.IO.StreamWriter..ctor (System.String путь, Boolean добавление) [0x00000] в: 0 в System.IO.File.CreateText (System.String пути) [0x00000] в: 0
его я предполагаю, потому что, когда запуск, игра получит доступ к текстуре/спрайту с защищенного веб-сайта с использованием WWW-метода, с HTTP, а не HTTPS, и попробуйте загрузить и сохранить его как спрайт на Application.PersistentDataPath, а затем применить его в игре
его работа отлично работает на Android, но сом ehow IOS не позволит считывать/записывать файл, Хенч ошибка
Херес фрагмент кода я использую:
IEnumerator getBillboard()
{
WWW getBillboardlistURL = new WWW(billboardlistURL);
yield return getBillboardlistURL;
if (getBillboardlistURL.error != null)
{
}
else
{
WWW imageLink = new WWW(pictLink[Mathf.FloorToInt(i/3)]);
yield return imageLink;
Texture2D imageTemp = imageLink.texture;
obj.transform.GetChild(0).GetComponent<SpriteRenderer>().sprite = Sprite.Create(imageTemp, new Rect(0, 0, imageTemp.width, imageTemp.height), new Vector2(0.5f, 0.5f));
obj.name = namaProduk[Mathf.FloorToInt(i/3)];
print("BILLBOARD ONLINE");
/// ======= WRITE BILLBOARD NAME TO FILE AND SAVE IT =======
/// ======================= END ============================
var bytes = imageLink.texture.EncodeToPNG();
//print(Application.dataPath);
//cek file
if(redownloadImage)
{
File.WriteAllBytes(Application.persistentDataPath + "/vendorBillboard/" + namaProduk[Mathf.FloorToInt(i/3)] + ".png", bytes);
print("REDOWNLOAD SEMUA TEXTURE!");
}
obj.SetActive(false);
billboardPool.Add(obj);
}
}
}
}
есть обходной путь или исправить для этого?
спасибо заранее
попробуйте использовать 'Path.Combine (Application.persistentDataPath, texturename)', чтобы убедиться, что вы генерируете правильный путь с помощью правильных разделителей. –
@UriPopov Я использую path.combine, в то время как он не дает ошибку о самом единстве, но он не может загрузить что-либо, он не может даже проверить мою папку. –
np: Я тестирую его на ПК и androi, оба дают ту же ошибку, которая не может получить текстура, так как не загружается, потому что папка не может создать даже причину path.combine –