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

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

一、Sprite(single):

	  SpriteRenderer spr = gameObject.GetComponent();  
          Texture2D texture2d = (Texture2D)Resources.Load("pictureName");//更换为pictureName的图片
          Sprite sp = Sprite.Create(texture2d,spr.sprite.textureRect,new Vector2(0.5f,0.5f));//注意居中显示采用0.5f值,保证所更换图片尺寸与原图片相同  
          spr.sprite = sp;  

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

	public Sprite[] potSprites;
	private Dictionary spritesDictionary;

	/// 
        /// 加载Sprite
        /// 
        private void LoadSprite()
        {
            spritesDictionary = new Dictionary();
            spritesDictionary.Add("pot1",potSprites[0]);
            spritesDictionary.Add("pot2", potSprites[1]);
        }

二、Sprite(multiple):

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

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

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

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

	    Sprite[] sprites = Resources.LoadAll("weizhu");
            for (int i = 0; i < sprites.Length; i++)
            {
                print("sprites["+i+"]: " + sprites[i]);
                spritesDictionary.Add(sprites[i].name,sprites[i]);
            }


你可能感兴趣的:(Unity3D)