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(loadPath);

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精灵的切割和导出到此结束,下篇我们再会!