Добавил кэширование поскейленных картинок, чтобы расходовать меньше батарейки и сетевого трафика
This commit is contained in:
@@ -20,6 +20,7 @@ public class PhotoFrame : MonoBehaviour
|
||||
InputField url;
|
||||
|
||||
private int currentImage;
|
||||
private Cache cache;
|
||||
|
||||
private Image CurrentImage
|
||||
{
|
||||
@@ -33,6 +34,7 @@ public class PhotoFrame : MonoBehaviour
|
||||
|
||||
public void Start()
|
||||
{
|
||||
cache = new Cache(Application.persistentDataPath);
|
||||
Screen.sleepTimeout = SleepTimeout.NeverSleep;
|
||||
currentImage = 0;
|
||||
ActivateUI(true);
|
||||
@@ -89,29 +91,40 @@ public class PhotoFrame : MonoBehaviour
|
||||
int imageIndex = Random.Range(0, loader.images.Count);
|
||||
string imageUrl = loader.images[imageIndex];
|
||||
|
||||
var request = UnityWebRequest.Get(imageUrl);
|
||||
request.downloadHandler = new DownloadHandlerTexture(true);
|
||||
yield return request.SendWebRequest();
|
||||
|
||||
if (request.isNetworkError || request.isHttpError)
|
||||
var bytes = cache.Get(imageUrl);
|
||||
if (bytes != null)
|
||||
{
|
||||
yield return new WaitForSeconds(1f);
|
||||
continue;
|
||||
var tex = new Texture2D(2, 2);
|
||||
tex.LoadImage(bytes);
|
||||
SetImageTexture(NextImage, tex);
|
||||
}
|
||||
|
||||
var downloadTime = Time.realtimeSinceStartup - startTime;
|
||||
if (PHOTO_INTERVAL > downloadTime)
|
||||
else
|
||||
{
|
||||
yield return new WaitForSeconds(PHOTO_INTERVAL - downloadTime);
|
||||
var request = UnityWebRequest.Get(imageUrl);
|
||||
request.downloadHandler = new DownloadHandlerTexture(true);
|
||||
yield return request.SendWebRequest();
|
||||
|
||||
if (request.isNetworkError || request.isHttpError)
|
||||
{
|
||||
yield return new WaitForSeconds(1f);
|
||||
continue;
|
||||
}
|
||||
|
||||
var downloadTime = Time.realtimeSinceStartup - startTime;
|
||||
if (PHOTO_INTERVAL > downloadTime)
|
||||
{
|
||||
yield return new WaitForSeconds(PHOTO_INTERVAL - downloadTime);
|
||||
}
|
||||
|
||||
var dh = request.downloadHandler as DownloadHandlerTexture;
|
||||
var tex = dh.texture;
|
||||
|
||||
SetImageTexture(NextImage, tex);
|
||||
dh.Dispose();
|
||||
request.Dispose();
|
||||
cache.Add(imageUrl, tex.EncodeToJPG());
|
||||
}
|
||||
|
||||
var dh = request.downloadHandler as DownloadHandlerTexture;
|
||||
var tex = dh.texture;
|
||||
|
||||
SetImageTexture(NextImage, tex);
|
||||
dh.Dispose();
|
||||
request.Dispose();
|
||||
|
||||
float currentStart = CurrentImage.color.a;
|
||||
float currentFinish = transparent.a;
|
||||
float nextStart = NextImage.color.a;
|
||||
|
||||
Reference in New Issue
Block a user