If you try creating test scene, with a simple script to change sprite every a period of time.
The sprite doesn’t change, but if you try to log the changed sprite name, you’ll see it has changed successfully. Which means only the visual is not changing.
Testing on Unity 6000.0.3f1, and on android S24 Ultra
My TestSpriteRendererChange.cs
script
using System.Collections;
using UnityEngine;
public class TestSpriteRendererChange : MonoBehaviour
{
[SerializeField] private SpriteRenderer spriteRenderer;
[SerializeField] private Sprite[] sprites;
private void Start()
{
StartCoroutine(ChangeSprites());
}
private IEnumerator ChangeSprites()
{
var index = 0;
foreach (var sprite in sprites)
{
Debug.Log($"before sprite: {spriteRenderer.sprite.name}");
spriteRenderer.sprite = sprite;
Debug.Log($"after sprite: {spriteRenderer.sprite.name}");
yield return new WaitForSeconds(0.1f);
index++;
}
if (index == sprites.Length)
{
index = 0;
StopCoroutine(nameof(ChangeSprites));
StartCoroutine(nameof(ChangeSprites));
}
}
}
Behaviour in unity editor
Behaviour in android device