Update UnityExtension.cs

This commit is contained in:
ALEXTANG
2023-12-12 13:00:53 +08:00
parent 1f2d99ddc9
commit c4ef07f13e

View File

@@ -134,8 +134,9 @@ namespace TEngine
/// <param name="isSetNativeSize">是否使用原生分辨率。</param> /// <param name="isSetNativeSize">是否使用原生分辨率。</param>
/// <param name="isAsync">是否使用异步加载。</param> /// <param name="isAsync">是否使用异步加载。</param>
/// <param name="customPackageName">指定资源包的名称。不传使用默认资源包</param> /// <param name="customPackageName">指定资源包的名称。不传使用默认资源包</param>
/// <param name="assetReference">指定资源引用组。</param>
public static void SetSprite(this UnityEngine.UI.Image image, string spriteName, bool isSetNativeSize = false, public static void SetSprite(this UnityEngine.UI.Image image, string spriteName, bool isSetNativeSize = false,
bool isAsync = false, string customPackageName = "") bool isAsync = false, string customPackageName = "",AssetReference assetReference = null)
{ {
if (image == null) if (image == null)
{ {
@@ -157,8 +158,15 @@ namespace TEngine
image.SetNativeSize(); image.SetNativeSize();
} }
if (assetReference != null)
{
assetReference.Reference(operation, spriteName);
}
else
{
image.gameObject.GetOrAddComponent<AssetReference>().Reference(operation, spriteName); image.gameObject.GetOrAddComponent<AssetReference>().Reference(operation, spriteName);
} }
}
else else
{ {
GameModule.Resource.LoadAssetAsync<Sprite>(spriteName, operation => GameModule.Resource.LoadAssetAsync<Sprite>(spriteName, operation =>
@@ -176,7 +184,15 @@ namespace TEngine
image.SetNativeSize(); image.SetNativeSize();
} }
image.sprite = operation.AssetObject as Sprite;
if (assetReference != null)
{
assetReference.Reference(operation, spriteName);
}
else
{
image.gameObject.GetOrAddComponent<AssetReference>().Reference(operation, spriteName); image.gameObject.GetOrAddComponent<AssetReference>().Reference(operation, spriteName);
}
}, customPackageName: customPackageName); }, customPackageName: customPackageName);
} }
} }
@@ -189,8 +205,9 @@ namespace TEngine
/// <param name="spriteName">图片名称。</param> /// <param name="spriteName">图片名称。</param>
/// <param name="isAsync">是否使用异步加载。</param> /// <param name="isAsync">是否使用异步加载。</param>
/// <param name="customPackageName">指定资源包的名称。不传使用默认资源包</param> /// <param name="customPackageName">指定资源包的名称。不传使用默认资源包</param>
/// <param name="assetReference">指定资源引用组。</param>
public static void SetSprite(this SpriteRenderer spriteRenderer, string spriteName, bool isAsync = false, public static void SetSprite(this SpriteRenderer spriteRenderer, string spriteName, bool isAsync = false,
string customPackageName = "") string customPackageName = "",AssetReference assetReference = null)
{ {
if (spriteRenderer == null) if (spriteRenderer == null)
{ {
@@ -208,8 +225,15 @@ namespace TEngine
var operation = GameModule.Resource.LoadAssetGetOperation<Sprite>(spriteName, customPackageName: customPackageName); var operation = GameModule.Resource.LoadAssetGetOperation<Sprite>(spriteName, customPackageName: customPackageName);
spriteRenderer.sprite = operation.AssetObject as Sprite; spriteRenderer.sprite = operation.AssetObject as Sprite;
if (assetReference != null)
{
assetReference.Reference(operation, spriteName);
}
else
{
spriteRenderer.gameObject.GetOrAddComponent<AssetReference>().Reference(operation, spriteName); spriteRenderer.gameObject.GetOrAddComponent<AssetReference>().Reference(operation, spriteName);
} }
}
else else
{ {
GameModule.Resource.LoadAssetAsync<Sprite>(spriteName, operation => GameModule.Resource.LoadAssetAsync<Sprite>(spriteName, operation =>
@@ -222,7 +246,14 @@ namespace TEngine
} }
spriteRenderer.sprite = operation.AssetObject as Sprite; spriteRenderer.sprite = operation.AssetObject as Sprite;
if (assetReference != null)
{
assetReference.Reference(operation, spriteName);
}
else
{
spriteRenderer.gameObject.GetOrAddComponent<AssetReference>().Reference(operation, spriteName); spriteRenderer.gameObject.GetOrAddComponent<AssetReference>().Reference(operation, spriteName);
}
}, customPackageName: customPackageName); }, customPackageName: customPackageName);
} }
} }