Unity 替换Image 中source image图片的三种方式

本文介绍了在Unity UI(UGUI)中替换图片资源的三种常见方法:通过Resources.Load加载资源,使用外部指定的图片资源,以及从网络URL下载并转换为Sprite。这些方法可以帮助开发者灵活地管理和更新游戏界面。

在NGUI中,我们可以直接用spriteName = “想要替换的图片名称”;  就可以很方便的替换资源

而UGUI却相对要麻烦一点,下面为大家介绍比较常用的三种替换方式。

一、

 

[csharp] view plain copy

using UnityEngine;  

using System.Collections;  

using UnityEngine.UI;     

public class Test : MonoBehaviour  

{     

   [SerializeField]  

 Image myImage;  

  // Use this for initialization  

    void Start()  

    {  

        myImage.sprite = Resources.Load("Image/pic", typeof(Sprite)) as Sprite;     // Image/pic 在 Assets/Resources/目录下  

    }  

}  


二、

[csharp] view plain copy

using UnityEngine;  

using System.Collections;  

using UnityEngine.UI;    

public class Test : MonoBehaviour  

{  

   [SerializeField]  

 Image myImage;   

   [SerializeField]  

  Sprite mySprite;    

 // Use this for initialization  

   void Start()     {  

       myImage.sprite = mySprite;      // mySprite 为外部指定的图片资源  

   }  

}  


三、

[csharp] view plain copy

using UnityEngine;  

using System.Collections;  

using UnityEngine.UI;     

public class Test : MonoBehaviour {     

   [SerializeField]  

 Image myImage;    

   // Use this for initialization  

 void Start () {  

       StartCoroutine(GetImage());  

    }      

    IEnumerator GetImage()  

    {  

       string url = "http://www.5dbb.com/images/logo.gif";  

       WWW www = new WWW(url);  

        yield return www;  

       if (string.IsNullOrEmpty(www.error))  

    {  

           Texture2D tex = www.texture;  

          Sprite temp = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0, 0));  

          myImage.sprite = temp;  

        }  

    }  

}  

Unity中,如果你想要通过代码动态地替换Source Image组件中的图片,你可以这样做: 1. 首先,确保你的场景中有一个`SpriteRenderer`组件的对象,这个对象通常会连接到一个`Sprite`或`Texture2D`类型的`Material`,并且该材料引用了一个`SpriteSheet`(包含多个精灵)或者单独的图像。 2. 获取到需要替换图片的游戏物体,例如: ```csharp GameObject gameObj = GameObject.Find("YourGameObjectName"); ``` 请将`"YourGameObjectName"`替换为你实际游戏物体的名称。 3. 确定你想替换的`SpriteRenderer`组件,如果直接连接在`gameObj`上,则是`gameObj.GetComponent<SpriteRenderer>()`;如果不是,则需要进一步查找。 4. 使用`Sprite`组件的`sprite`属性来获取或设置当前的精灵: ```csharp Sprite currentSprite = gameObj.GetComponent<SpriteRenderer>().sprite; ``` 5. 创建一个新的`Sprite`对象,或者加载新的图像资源,这可以是一个从Resources加载的精灵切片或者是一张新创建的`Texture2D`: ```csharp Sprite newSprite = Resources.Load<Sprite>("NewImageName"); // 替换为你的新图名 // 或者 Texture2D newTexture = LoadTextureFromAssetOrResource("NewImageName"); // 自行实现纹理加载方法 newSprite = Sprite.Create(newTexture, new Rect(0, 0, texture.width, texture.height), Vector2.zero); ``` 6. 更新`SpriteRenderer`的`sprite`属性: ```csharp gameObj.GetComponent<SpriteRenderer>().sprite = newSprite; ``` 现在,源图像已经被新的图片替换。记得在运行时检查加载和替换是否成功,并处理可能出现的异常。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值