当前位置:丝路教程网 > Unity3D >

Unity3d中Sprite(精灵)的切割和导出

2016-11-04 09:47 来源: 丝路教程网 分类: Unity3D
403 作者:丝路教程网

[导读] Unity中经常使用到精灵,尤其是2D游戏中制作动画等!今天我们就学习下精灵的切割和导出吧! 废话不多说,先建议空的工程。 1,打开Unity建工程,同时导入素材进行资源分类,工程不在

  Unity中经常使用到精灵,尤其是2D游戏中制作动画等!今天我们就学习下精灵的切割和导出吧!

  废话不多说,先建议空的工程。

  1,打开Unity建工程,同时导入素材进行资源分类,工程不在于大小,这是我们对待它的态度!

  2.开始分割精灵,三步走!

  编辑精灵.

  开始分割精灵

  Apply一下,看下分割的精灵,0-9共9个。

  贴精灵导出代码:

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


免责声明:

丝路教程网的部分文章信息来源于网络以及网友投稿,本网站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,如权利人发现存在误传其作品情形,请及时与本站联系。

Unity3d中Sprite(精灵)的切割和导出

的相关文章
Copyright © 2008-2017 blog.silucg.com 丝路教程网 版权所有 网站地图
点击这里给我发消息
丝路教育