Mapz's Blog

可以递归的函数指针

Unity学习:切割Sprite

很多2D老资源是打好成一张图的,我们需要去切成一个一个的sprite

这时候导入图片后,材质类型选择 Sprite and UI , Sprite 类型选择 Mutiple

然后打开 Sprite Editor,自己切就可以了

Sprite Editor 里面选择 Slice 切片

如果图片中有框,选择 自动切应该就 OK

否则还有按 大小切 和 按个数来切

切完之后 点击每个片片,可以手动再修改一下


使用脚本来处理每个切片

我们导入的素材每个sprite有个小黑框,这个小黑框我们不要,怎么办呢?

每个手动去重新校正太麻烦,自己写个Editor脚本来解决吧

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
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

public class SpriteCustomScrips : MonoBehaviour {

[MenuItem ("Sprites/Rect small by 1")]
static void SpritesSmallBy1 () {
// Debug.Log (Selection.

string path = AssetDatabase.GetAssetPath (Selection.activeObject);
Debug.Log (path);

TextureImporter ti = AssetImporter.GetAtPath (path) as TextureImporter;
SpriteMetaData[] spriteSheet = ti.spritesheet;
for (int i = 0; i < spriteSheet.Length; i++) {

if (spriteSheet[i].name.StartsWith ("Hydra_walk_")) {
spriteSheet[i].rect = new Rect (spriteSheet[i].rect.x + 1, spriteSheet[i].rect.y + 1, spriteSheet[i].rect.width - 2, spriteSheet[i].rect.height - 2);
}
}
ti.spritesheet = spriteSheet;
EditorUtility.SetDirty (ti);
ti.SaveAndReimport ();

}
}

上面的脚本大家可以参考一下,修改了一下sprite的rect

然后我们在project视图中选中刚才自动切好的资源,点击菜单处理一下,发现1px的小黑框没有了