KING_UNITY学习之Unity2D代码动态为Sprite Renderer的Sprite赋值sprite精灵图片

如何通过代码动态设置Sprite Renderer的Sprite? Sprite精灵有两种情况,一种是single模式的sprite,另外一种是multiple的sprite。下面分别写写这两种类型的处理方法:

一、Sprite(single):

<span style="font-size:18px;"><span style="white-space:pre">	</span>  SpriteRenderer spr = gameObject.GetComponent<SpriteRenderer>();  
          Texture2D texture2d = (Texture2D)Resources.Load("pictureName");//更换为pictureName的图片
          Sprite sp = Sprite.Create(texture2d,spr.sprite.textureRect,new Vector2(0.5f,0.5f));//注意居中显示采用0.5f值,保证<span style="font-family: Arial; line-height: 26px;">所更换图片尺寸与原图片相同</span>  
          spr.sprite = sp;  </span>

如有不同的图片,可以用字典来保存,统一管理。如:

<span style="font-size:18px;"><span style="white-space:pre">	</span>public Sprite[] potSprites;
<span style="white-space:pre">	</span>private Dictionary<string, Sprite> spritesDictionary;

<span style="white-space:pre">	</span>/// <summary>
        /// 加载Sprite
        /// </summary>
        private void LoadSprite()
        {
            spritesDictionary = new Dictionary<string, Sprite>();
            spritesDictionary.Add("pot1",potSprites[0]);
            spritesDictionary.Add("pot2", potSprites[1]);
        }</span>

二、Sprite(multiple):

Sprite被设置为Multiple的情况下,如何根据子Sprite的名字设置精灵图片呢:

找不到直接根据名字取子Sprite的方法,但是我们可以通过

Sprite[] sprites = Resources.LoadAll<Sprite>("path"); // path为Sprite在Resources中的路径

来访问到所有子Sprite。只有我们初始化时遍历这些子Sprite,以name为key放入字典中,就可以根据名字取得该子Sprite啦

<span style="font-size:18px;"><span style="white-space:pre">	</span>    Sprite[] sprites = Resources.LoadAll<Sprite>("weizhu");
            for (int i = 0; i < sprites.Length; i++)
            {
                print("sprites["+i+"]: " + sprites[i]);
                spritesDictionary.Add(sprites[i].name,sprites[i]);
            }</span>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值