您的位置:首页 > 移动开发 > Unity3D

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

2015-12-20 12:01 656 查看
如何通过代码动态设置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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: