Skip to content

Commit 7d2c5a8

Browse files
committed
Enhance image loading methods by renaming parameters for clarity; add support for loading Texture2D and updating README with new features
1 parent 62308d2 commit 7d2c5a8

File tree

4 files changed

+65
-14
lines changed

4 files changed

+65
-14
lines changed

Assets/_PackageRoot/Runtime/Future/Future.ThenSet.cs

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,39 +50,57 @@ public static IFuture<Sprite> ThenSet(this IFuture<Sprite> future, params Image[
5050
/// <summary>
5151
/// Set image into array of RawImages
5252
/// </summary>
53-
/// <param name="images">Array of RawImages</param>
53+
/// <param name="rawImages">Array of RawImages</param>
5454
/// <returns>Returns async Future</returns>
5555
public static IFuture<Sprite> ThenSet(this IFuture<Sprite> future, params RawImage[] rawImages)
5656
=> future.ThenSet((consumer, sprite) => consumer.texture = sprite?.texture, rawImages);
5757

5858
/// <summary>
5959
/// Set image into array of RawImages
6060
/// </summary>
61-
/// <param name="images">Array of RawImages</param>
61+
/// <param name="rawImages">Array of RawImages</param>
6262
/// <returns>Returns async Future</returns>
6363
public static IFuture<Texture2D> ThenSet(this IFuture<Texture2D> future, params RawImage[] rawImages)
6464
=> future.ThenSet((consumer, texture) => consumer.texture = texture, rawImages);
6565

6666
/// <summary>
6767
/// Set image into array of SpriteRenderers
6868
/// </summary>
69-
/// <param name="images">Array of SpriteRenderers</param>
69+
/// <param name="spriteRenderers">Array of SpriteRenderers</param>
7070
/// <returns>Returns async Future</returns>
7171
public static IFuture<Sprite> ThenSet(this IFuture<Sprite> future, params SpriteRenderer[] spriteRenderers)
7272
=> future.ThenSet((consumer, sprite) => consumer.sprite = sprite, spriteRenderers);
7373

7474
/// <summary>
7575
/// Set image into array of Materials
7676
/// </summary>
77-
/// <param name="images">Array of Materials</param>
77+
/// <param name="materials">Array of Materials</param>
78+
/// <returns>Returns async Future</returns>
79+
public static IFuture<Sprite> ThenSet(this IFuture<Sprite> future, params Material[] materials)
80+
=> future.ThenSet("_MainTex", materials);
81+
82+
/// <summary>
83+
/// Set image into array of Materials
84+
/// </summary>
85+
/// <param name="propertyName">Property name to set the texture</param>
86+
/// <param name="materials">Array of Materials</param>
7887
/// <returns>Returns async Future</returns>
7988
public static IFuture<Sprite> ThenSet(this IFuture<Sprite> future, string propertyName = "_MainTex", params Material[] materials)
8089
=> future.ThenSet((consumer, sprite) => consumer.SetTexture(propertyName, sprite?.texture), materials);
8190

8291
/// <summary>
8392
/// Set image into array of Materials
8493
/// </summary>
85-
/// <param name="images">Array of Materials</param>
94+
/// <param name="materials">Array of Materials</param>
95+
/// <returns>Returns async Future</returns>
96+
public static IFuture<Texture2D> ThenSet(this IFuture<Texture2D> future, params Material[] materials)
97+
=> future.ThenSet("_MainTex", materials);
98+
99+
/// <summary>
100+
/// Set image into array of Materials
101+
/// </summary>
102+
/// <param name="propertyName">Property name to set the texture</param>
103+
/// <param name="materials">Array of Materials</param>
86104
/// <returns>Returns async Future</returns>
87105
public static IFuture<Texture2D> ThenSet(this IFuture<Texture2D> future, string propertyName = "_MainTex", params Material[] materials)
88106
=> future.ThenSet((consumer, texture) => consumer.SetTexture(propertyName, texture), materials);

Assets/_PackageRoot/Runtime/Future/Future.ThenSetRef.cs

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,39 +59,57 @@ public static IFuture<Reference<Sprite>> ThenSet(this IFuture<Reference<Sprite>>
5959
/// <summary>
6060
/// Set image into array of RawImages
6161
/// </summary>
62-
/// <param name="images">Array of RawImages</param>
62+
/// <param name="rawImages">Array of RawImages</param>
6363
/// <returns>Returns async Future</returns>
6464
public static IFuture<Reference<Sprite>> ThenSet(this IFuture<Reference<Sprite>> future, params RawImage[] rawImages)
6565
=> future.ThenSet((consumer, reference) => consumer.texture = reference?.Value?.texture, rawImages);
6666

6767
/// <summary>
6868
/// Set image into array of RawImages
6969
/// </summary>
70-
/// <param name="images">Array of RawImages</param>
70+
/// <param name="rawImages">Array of RawImages</param>
7171
/// <returns>Returns async Future</returns>
7272
public static IFuture<Reference<Texture2D>> ThenSet(this IFuture<Reference<Texture2D>> future, params RawImage[] rawImages)
7373
=> future.ThenSet((consumer, reference) => consumer.texture = reference?.Value, rawImages);
7474

7575
/// <summary>
7676
/// Set image into array of SpriteRenderers
7777
/// </summary>
78-
/// <param name="images">Array of SpriteRenderers</param>
78+
/// <param name="spriteRenderers">Array of SpriteRenderers</param>
7979
/// <returns>Returns async Future</returns>
8080
public static IFuture<Reference<Sprite>> ThenSet(this IFuture<Reference<Sprite>> future, params SpriteRenderer[] spriteRenderers)
8181
=> future.ThenSet((consumer, reference) => consumer.sprite = reference?.Value, spriteRenderers);
8282

8383
/// <summary>
8484
/// Set image into array of Materials
8585
/// </summary>
86-
/// <param name="images">Array of Materials</param>
86+
/// <param name="materials">Array of Materials</param>
87+
/// <returns>Returns async Future</returns>
88+
public static IFuture<Reference<Sprite>> ThenSet(this IFuture<Reference<Sprite>> future, params Material[] materials)
89+
=> future.ThenSet("_MainTex", materials);
90+
91+
/// <summary>
92+
/// Set image into array of Materials
93+
/// </summary>
94+
/// <param name="propertyName">Property name to set the texture</param>
95+
/// <param name="materials">Array of Materials</param>
8796
/// <returns>Returns async Future</returns>
8897
public static IFuture<Reference<Sprite>> ThenSet(this IFuture<Reference<Sprite>> future, string propertyName = "_MainTex", params Material[] materials)
8998
=> future.ThenSet((consumer, reference) => consumer.SetTexture(propertyName, reference?.Value?.texture), materials);
9099

91100
/// <summary>
92101
/// Set image into array of Materials
93102
/// </summary>
94-
/// <param name="images">Array of Materials</param>
103+
/// <param name="materials">Array of Materials</param>
104+
/// <returns>Returns async Future</returns>
105+
public static IFuture<Reference<Texture2D>> ThenSet(this IFuture<Reference<Texture2D>> future, params Material[] materials)
106+
=> future.ThenSet("_MainTex", materials);
107+
108+
/// <summary>
109+
/// Set image into array of Materials
110+
/// </summary>
111+
/// <param name="propertyName">Property name to set the texture</param>
112+
/// <param name="materials">Array of Materials</param>
95113
/// <returns>Returns async Future</returns>
96114
public static IFuture<Reference<Texture2D>> ThenSet(this IFuture<Reference<Texture2D>> future, string propertyName = "_MainTex", params Material[] materials)
97115
=> future.ThenSet((consumer, reference) => consumer.SetTexture(propertyName, reference?.Value), materials);

Assets/_PackageRoot/Samples/SampleImageLoading.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,20 @@ public class SampleImageLoading : MonoBehaviour
66
{
77
[SerializeField] string imageURL;
88
[SerializeField] Image image;
9+
[SerializeField] Material material;
910

1011
async void Start()
1112
{
12-
// Loading sprite from web, cached for quick load next time
13+
// Loading Sprite from web, cached for quick load next time
1314
image.sprite = await ImageLoader.LoadSprite(imageURL);
1415

15-
// Same loading with auto set to image
16+
// Same loading with self inject into image
1617
await ImageLoader.LoadSprite(imageURL).ThenSet(image);
18+
19+
// Loading Texture2D from web, cached for quick load next time
20+
material.mainTexture = await ImageLoader.LoadTexture(imageURL);
21+
22+
// Same loading with self inject into material
23+
await ImageLoader.LoadTexture(imageURL).ThenSet(material);
1724
}
1825
}

README.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ Async image loader with two caching layers for Unity. It supports loading images
88
## Features
99

1010
- ✔️ Async loading from **Web** or **Local** `ImageLoader.LoadSprite(imageURL);`
11+
- ✔️ Load `Texture2D` and `Sprite`
1112
- ✔️ **Memory** and **Disk** caching - tries to load from memory first, then from disk
1213
- ✔️ Dedicated thread for disk operations
1314
- ✔️ Avoids loading same image multiple times simultaneously, task waits for completion the first and just returns loaded image if at least one cache layer activated
@@ -45,14 +46,21 @@ public class SampleImageLoading : MonoBehaviour
4546
{
4647
[SerializeField] string imageURL;
4748
[SerializeField] Image image;
49+
[SerializeField] Material material;
4850

4951
async void Start()
5052
{
51-
// Loading sprite from web, cached for quick load next time
53+
// Loading Sprite from web, cached for quick load next time
5254
image.sprite = await ImageLoader.LoadSprite(imageURL);
5355

54-
// Same loading with auto set to image
56+
// Same loading with self inject into image
5557
await ImageLoader.LoadSprite(imageURL).ThenSet(image);
58+
59+
// Loading Texture2D from web, cached for quick load next time
60+
material.mainTexture = await ImageLoader.LoadTexture(imageURL);
61+
62+
// Same loading with self inject into material
63+
await ImageLoader.LoadTexture(imageURL).ThenSet(material);
5664
}
5765
}
5866
```

0 commit comments

Comments
 (0)