Unity中经常使用到精灵,尤其是2D游戏中制作动画等!今天我们就学习下精灵的切割和导出吧!
废话不多说,先建议空的工程。
1,打开Unity建工程,同时导入素材进行资源分类,工程不在于大小,这是我们对待它的态度!
2.开始分割精灵,三步走!
编辑精灵.
Apply一下,看下分割的精灵,0-9共9个。
贴精灵导出代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
using
UnityEngine;
using
UnityEditor;
public
class
SpriteTailed:MonoBehaviour
{
[MenuItem(
"Tools/导出精灵"
)]
static
void
SaveSprite()
{
string resourcesPath =
"Assets/Resources/"
;
foreach (Object obj in Selection.objects)
{
string selectionPath = AssetDatabase.GetAssetPath(obj);
// 必须最上级是"Assets/Resources/"
if
(selectionPath.StartsWith(resourcesPath))
{
string selectionExt = System.IO.Path.GetExtension(selectionPath);
if
(selectionExt.Length == 0)
{
continue
;
}
// 从路径"Assets/Resources/Sprite/number.png"得到路径"Sprite/number"
string loadPath = selectionPath.Remove(selectionPath.Length - selectionExt.Length);
loadPath = loadPath.Substring(resourcesPath.Length);
// 加载此文件下的所有资源
Sprite[] sprites = Resources.LoadAll
if
(sprites.Length > 0)
{
Debug.Log(sprites.Length);
// 创建导出文件夹
string outPath = Application.dataPath +
"/outSprite/"
+ loadPath;
System.IO.Directory.CreateDirectory(outPath);
foreach (Sprite sprite in sprites)
{
Debug.Log(
"Export Sprite:"
+ sprite.name);
// 创建单独的纹理
Texture2D tex =
new
Texture2D((
int
)sprite.rect.width, (
int
)sprite.rect.height, sprite.texture.format,
false
);
tex.SetPixels(sprite.texture.GetPixels((
int
)sprite.rect.xMin, (
int
)sprite.rect.yMin,
(
int
)sprite.rect.width, (
int
)sprite.rect.height));
tex.Apply();
// 写入成PNG文件
System.IO.File.WriteAllBytes(outPath +
"/"
+ sprite.name +
".png"
, tex.EncodeToPNG());
}
Debug.Log(
"SaveSprite to "
+ outPath);
}
}
}
Debug.Log(
"SaveSprite Finished"
);
}
}
|
将脚本挂到MainCamera上,点击Tools/导出精灵:
OK,大功告成,好了,本篇unity3d教程关于Sprite精灵的切割和导出到此结束,下篇我们再会!