Это делается путем делегирования событий. Событие будет привязываться к элементу-оболочке, но будет делегировано элементу селекторного класса. Вот как это работает.
$('.wrapper-class').on("click", '.selector-class', function() {
// Your code here
});
Элемент-оболочка-оболочка может быть любым ex. документа, тела или вашей обертки. Упаковщик должен уже существовать.
Я попытался преобразовать его в байты, редактируя эту функцию, а не передавая ее www.text и получив поврежденную ошибку изображения
blockquote>Вероятно, это причина 90 % вашей проблемы.
WWW.text
используется для не двоичных данных, таких как простой текст.1. Загружать изображения или файлы с помощью
WWW.bytes
неWWW.text
.2. Сохранять изображение с помощью
File.WriteAllBytes
.3. Прочитайте изображение с
File.ReadAllBytes
.4. Загрузите изображение в текстуру с помощью
Texture2D.LoadImage(yourImageByteArray);
5. Ваш путь должен быть
Application.persistentDataPath/yourfolderName/thenFileName
, если вы хотите, чтобы это было совместимо с каждой платформой. Он не должен бытьApplication.persistentDataPath/yourFileName
илиApplication.dataPath
.6. Наконец, используйте
Debug.Log
, чтобы узнать, что происходит в вашем коде. Вы должны или, по крайней мере, использовать отладчик. Вы должны точно знать, где находится ваш код.Вам все равно нужно выполнить некоторые проверки ошибок.
public void downloadImage(string url, string pathToSaveImage) { WWW www = new WWW(url); StartCoroutine(_downloadImage(www, pathToSaveImage)); } private IEnumerator _downloadImage(WWW www, string savePath) { yield return www; //Check if we failed to send if (string.IsNullOrEmpty(www.error)) { UnityEngine.Debug.Log("Success"); //Save Image saveImage(savePath, www.bytes); } else { UnityEngine.Debug.Log("Error: " + www.error); } } void saveImage(string path, byte[] imageBytes) { //Create Directory if it does not exist if (!Directory.Exists(Path.GetDirectoryName(path))) { Directory.CreateDirectory(Path.GetDirectoryName(path)); } try { File.WriteAllBytes(path, imageBytes); Debug.Log("Saved Data to: " + path.Replace("/", "\\")); } catch (Exception e) { Debug.LogWarning("Failed To Save Data to: " + path.Replace("/", "\\")); Debug.LogWarning("Error: " + e.Message); } } byte[] loadImage(string path) { byte[] dataByte = null; //Exit if Directory or File does not exist if (!Directory.Exists(Path.GetDirectoryName(path))) { Debug.LogWarning("Directory does not exist"); return null; } if (!File.Exists(path)) { Debug.Log("File does not exist"); return null; } try { dataByte = File.ReadAllBytes(path); Debug.Log("Loaded Data from: " + path.Replace("/", "\\")); } catch (Exception e) { Debug.LogWarning("Failed To Load Data from: " + path.Replace("/", "\\")); Debug.LogWarning("Error: " + e.Message); } return dataByte; }
Использование:
Подготовьте url для загрузки изображения и сохранения в:
//File url string url = "http://www.wallpapereast.com/static/images/Cool-Wallpaper-11C4.jpg"; //Save Path string savePath = Path.Combine(Application.persistentDataPath, "data"); savePath = Path.Combine(savePath, "Images"); savePath = Path.Combine(savePath, "logo");
Как вы можете видеть, нет необходимости добавлять расширение изображения ( png , jpg ) в savePath , и вы не должны добавлять расширение изображения в путь сохранения. Это облегчит загрузку позже, если вы не знаете расширение. Он должен работать до тех пор, пока изображение представляет собой формат изображения png или jpg .
Загружаемый файл:
downloadImage(url, savePath);
Загрузить изображение из файла:
byte[] imageBytes = loadImage(savePath);
Поместить изображение в Texture2D:
Texture2D texture; texture = new Texture2D(2, 2); texture.LoadImage(imageBytes);
Debug.Log
является правильным. Вероятно, файл хранится в \ Users \ Diego \ Library \ Application Support \ DefaultCompany \ 3D Interactive App \ data \ Images i> и имя файла logo i>. Я не использую Mac, но вы можете Google просматривать скрытые папки в папке Library. Посмотрите здесь – Programmer 15 April 2017 в 11:09Directory.Exists(Path.GetDirectoryName(path))
. Если вы ищете способ сохранить кучу данных, кроме изображений, видео и звука, используйте Json. Я сделал простой вспомогательный класс для этого здесь – Programmer 15 April 2017 в 11:13