1、Sprite Renderer
Sprite Renderer是精灵渲染器,所有2D游戏中游戏资源(除UI外)都是通过Sprite Renderer让我们看到的
2、2D对象创建
- 直接拖入Sprite图片到hierachy窗口
- 右键创建Sprite
- 空物体添加Sprite Renderer脚本
3、相关参数

补充:如果一个带有Sprite Renderer的对象带有一个子物体,通过Flip进行转向其子物体并不会跟着一起转向!
4、相关代码
GameObject obj = new GameObject();
SpriteRenderer sr = obj.AddComponent<SpriteRenderer>();
//动态的改变图片
sr.sprite = Resources.Load<Sprite>("dead1");
//动态的加载图集中的图
Sprite[] sprs = Resources.LoadAll<Sprite>("Test");
sr.sprite = sprs[10];
5、练习
- 图集加载的管理类
public class MultipleMgr
{
private static MultipleMgr instance = new MultipleMgr();
public static MultipleMgr Instatnce => instance;
private Dictionary<string, Dictionary<string, Sprite>> dic = new Dictionary<string, Dictionary<string, Sprite>>();
private MultipleMgr()
{
}
/// <summary>
/// 获取Multiple图集中的某一张小图
/// </summary>
/// <param name="multipleName">图集名</param>
/// <param name="spriteName">单张图片名</param>
/// <returns></returns>
public Sprite GetSprite(string multipleName, string spriteName)
{
if( dic.ContainsKey(multipleName) )
{
if (dic[multipleName].ContainsKey(spriteName))
return dic[multipleName][spriteName];
}
else
{
Dictionary<string, Sprite> dicTmp = new Dictionary<string, Sprite>();
Sprite[] sprs = Resources.LoadAll<Sprite>(multipleName);
for (int i = 0; i < sprs.Length; i++)
{
dicTmp.Add(sprs[i].name, sprs[i]);
}
dic.Add(multipleName, dicTmp);
if( dicTmp.ContainsKey(spriteName) )
return dicTmp[spriteName];
}
return null;
}
public void ClearInfo()
{
dic.Clear();
Resources.UnloadUnusedAssets();
}
}
- 2D对象的左右移动(暂时没有动画)
public class PlayerObject : MonoBehaviour
{
public float moveSpeed = 5;
private float h;
private SpriteRenderer sr;
void Start()
{
sr = this.GetComponent<SpriteRenderer>();
}
void Update()
{
h = Input.GetAxis("Horizontal");
this.transform.Translate(5 * Time.deltaTime * Vector3.right * h);
if (h < 0)
sr.flipX = true;
else if (h > 0)
sr.flipX = false;
}
}

本文介绍了Unity中用于2D游戏渲染的关键组件——Sprite Renderer,包括如何创建2D对象, Sprite Renderer的主要参数,以及一些相关代码示例和实践练习。
964

被折叠的 条评论
为什么被折叠?



