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

Unity中无法通过Image.sprite修改Image组件源图片问题

问题描述

我正在开发Unity背包系统,更新背包时会调用以下代码里的AssignImage方法。在Inspector中能看到icon变量已被正确赋值,但Image组件的Sprite始终没有变化,保持初始状态。

代码片段

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class inventorySlot : MonoBehaviour
{
    public Sprite icon;
    public Image image;
    

    public void AssignImage( itemInstance _item ) {
        
        icon = _item.source_itemData.icon;
        image.sprite = icon;
    }

}
排查与解决办法
  • 检查image变量引用:确认Inspector中已将目标Image组件拖入inventorySlot脚本的image字段,若为空控制台会抛出NullReferenceException错误。
  • 确认调用时机:如果在Awake/Start之前调用AssignImage,Image组件可能未完成初始化,可将调用逻辑移到Start之后的生命周期阶段,比如事件触发时或Update中。
  • 检查Image组件状态:查看Image组件的Enabled选项是否勾选,未勾选的话即使Sprite改变也不会显示。
  • 验证目标实例:确保调用AssignImage的是正确的inventorySlot对象,避免误调用了未关联UI的其他实例。
  • 强制刷新UI:若以上都没问题,可在赋值Sprite后添加代码强制刷新:
    image.SetNativeSize();
    Canvas.ForceUpdateCanvases();
    
  • 检查Sprite资源:确认_item.source_itemData.icon指向的是有效的Sprite资源,而非空或错误资源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 13:02:03