string sprite_path = "img/无标题"; //Application.dataPath +
Debug.Log(sprite_path);
Texture2D texture = Resources.Load(sprite_path) as Texture2D;
SpriteRenderer spriteRenderer = transform.GetComponent<SpriteRenderer>();
Debug.Log("texture size:"+texture.width.ToString() + "\t" + texture.height.ToString());
spriteRenderer.sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.zero);
需要注意的点:
1、使用Resources.Load时,读取的资源文件必须位于Assets下的Resources文件夹里。
2、资源文件不要写后缀名!
创建多个sprite的例子:
//需要attach到camera上,来获取坐标转换等组件
void create_sprites()
{
transform.GetComponent<Camera>().orthographicSize = (float)Screen.height / 2 / 100;
string sprite_path = "img/无标题";
Texture2D texture = Resources.Load(sprite_path) as Texture2D;
Debug.Log("texture size:" + texture.width.ToString() + "," + texture.height.ToString());
int offset = 0;
for (int k = 0; k < 2; k++)
{
GameObject new_empty = new GameObject();
new_empty.AddComponent<SpriteRenderer>();
SpriteRenderer spr = new_empty.GetComponent<SpriteRenderer>();
//纹理,图片的区域,图片的中心点的相对位置
spr.sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.zero);
//设置这个GameObject的位置(横向,纵向,高度)
//从屏幕坐标进行转换。x轴从左到右,y轴从下到上
Vector3 vec = transform.GetComponent<Camera>().ScreenToWorldPoint(new Vector3(offset, 0, 10));
new_empty.GetComponent<Transform>().position = vec;
offset += texture.width;
}
}
注意:
sprite的实际大小可能跟预计的像素大小不同。这是由于camera 的size设置不对导致的。需要根据屏幕高度计算,其中,100是默认的pixels to units单位