You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity URP 2D中SpriteRenderer安卓构建运行时切换Sprite无视觉更新

URP 2D项目安卓设备Sprite切换无视觉更新问题解决

问题背景

Unity 6000.0.3f1版本下,URP 2D项目使用脚本定期切换SpriteRenderer的Sprite,日志显示Sprite数据已成功切换,但三星S24 Ultra设备上无视觉变化;编辑器和Built-in RP 2D项目运行正常。测试脚本如下:

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));
        }
    }
}

可行解决方案

  • 关闭URP 2D动态批处理
    进入Project Settings > Graphics > URP Global Settings > 2D Renderer,关闭Dynamic Batching选项后重新打包。URP 2D的动态批处理可能在安卓设备上导致Sprite切换后的渲染状态未及时更新。

  • 强制SpriteRenderer刷新
    设置Sprite后,通过禁用再启用组件的方式强制触发渲染更新,修改代码如下:

    spriteRenderer.sprite = sprite;
    // 强制刷新渲染状态
    spriteRenderer.enabled = false;
    spriteRenderer.enabled = true;
    Debug.Log($"after sprite: {spriteRenderer.sprite.name}");
    

    也可以尝试调用spriteRenderer.Rebuild(CanvasUpdate.PreRender);(涉及UI元素时更适用)。

  • 检查Sprite导入配置
    确保所有切换的Sprite导入设置中:

    • Texture Type为Sprite (2D and UI)
    • 安卓平台下的Compression Format选择ETC2(适配三星设备GPU)
    • 若使用GPU实例化,确认Enable GPU Instancing选项已正确配置
  • 验证URP渲染管线配置

    1. 确认场景中的2D相机关联了正确的URP 2D Renderer
    2. 相机的Culling Mask包含Sprite所在的图层
    3. 项目的Graphics Settings中已将URP Render Pipeline Asset设为默认
  • 升级Unity或URP包
    Unity 6000.0.3f1属于早期版本,可能存在URP 2D与安卓新设备的兼容性bug。尝试升级到最新的Unity 6.x稳定版,或更新URP包至对应版本的补丁版本。

内容的提问来源于stack exchange,提问作者CODEHUB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 06:59:58