Unity 切割导出精灵

摘要:
Unity中经常使用到精灵,尤其是2D游戏中制作动画等!1,打开Unity建工程。编辑精灵.开始分割精灵Apply一下,看下分割的精灵,0-9共9个。贴精灵导出代码:usingUnityEngine;usingUnityEditor;publicclassSpriteTailed:MonoBehaviour{[MenuItem]staticvoidSaveSprite(){stringresourcesPath="Assets/Resources/";foreach{stringselectionPath=AssetDatabase.GetAssetPath;//必须最上级是"Assets/Resources/"if{stringselectionExt=System.IO.Path.GetExtension;if{continue;}//从路径"Assets/Resources/Sprite/number.png"得到路径"Sprite/number"stringloadPath=selectionPath.Remove;loadPath=loadPath.Substring;//加载此文件下的所有资源Sprite[]sprites=Resources.LoadAll;if{Debug.Log;//创建导出文件夹stringoutPath=Application.dataPath+"/outSprite/"+loadPath;System.IO.Directory.CreateDirectory;foreach{Debug.Log;//创建单独的纹理Texture2Dtex=newTexture2D;tex.SetPixels;tex.Apply();//写入成PNG文件System.IO.File.WriteAllBytes;}Debug.Log;}}}Debug.Log;}}将脚本挂到MainCamera上,点击Tools/导出精灵:失败了,检查下原因!再次点击Tools/导出精灵,然后Refresh资源,就可以看到了!

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

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

1,打开Unity建工程。

Unity 切割导出精灵第1张

2 导入素材进行资源分类,工程不在于大小,这是我们对待它的态度!

Unity 切割导出精灵第2张

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

Unity 切割导出精灵第3张

编辑精灵.

Unity 切割导出精灵第4张

开始分割精灵

Unity 切割导出精灵第5张

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

Unity 切割导出精灵第6张

贴精灵导出代码:

usingUnityEngine;
usingUnityEditor;
public classSpriteTailed:MonoBehaviour
{
    [MenuItem("Tools/导出精灵")]
    static voidSaveSprite()
    {
        string resourcesPath = "Assets/Resources/";
        foreach (Object obj inSelection.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<Sprite>(loadPath);
                if (sprites.Length > 0)
                {
                    Debug.Log(sprites.Length);
                    //创建导出文件夹
                    string outPath = Application.dataPath + "/outSprite/" +loadPath;
                    System.IO.Directory.CreateDirectory(outPath);
                    foreach (Sprite sprite insprites)
                    {
                        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/导出精灵:

Unity 切割导出精灵第7张

失败了,检查下原因!莫急,,,哦,现在的精灵是不可以读写的,我们要修改它的属性。

Unity 切割导出精灵第8张

再次点击Tools/导出精灵,然后Refresh资源,就可以看到了!

Unity 切割导出精灵第9张

OK,精灵资源导出成功!

免责声明:文章转载自《Unity 切割导出精灵》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇云计算openstack核心组件——glance— 镜像服务(6)半吊子菜鸟学Web开发6 -- Vscode开发环境配置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[Unity热更新]tolua# &amp;amp; LuaFramework(一):基础

一、tolua# c#调用lua:LuaState[变量名/函数名] 1.LuaState a.执行lua代码段 DoString(string) DoFile(.lua文件名) Require(.lua文件名(但没有.lua后缀)) b.获取lua函数或者表 LuaFunction func = lua.GetFunction(函数名);      ...

Unity调用安卓Android的Toast

需求:在游戏中弹窗消息,调起安卓的Toast 项目中需要做Unity和安卓交互时,经常需要通过安卓Toast来做简单的输出,以便于测试。 方法一:Unity中,C#主导 //Unity调用安卓的土司 public static void MakeToast(stringinfo) { AndroidJavaClass unityPla...

unity重写软键盘for Android NGUI

一 原因 以为某些原因,需要重写Unity游戏中Android的软键盘的样式,然而unity对android和ios的ios的软键盘都有封装,在Unity中TouchScreenKeyboard.Open可以打开一个软键盘,然而对这个软键盘的操作函数少的可怜,所以有了这篇文章. 二 目的 本文的主要目的是重写NGUI的UIInput,也就是TouchScr...

Unity 如何在打包的时候执行一些逻辑

1、如果想让unity在打包的过程中,执行一些逻辑,那么该如何做呢?代码如下: using UnityEditor; using UnityEditor.Build; using UnityEngine; public class NewBehaviourScript : IPreprocessBuild { public int callbac...

unity3d 导出 Excel

我在unity里需要导出成Excel格式,试了一些方法,其中用c#的com组件的我还没成功不知道该怎么在unity里调用,(如果哪位大哥用别的方法在unity里成功了,可以交流下,最好给我一个小demo(849288321@qq.com),谢谢啦.),不过后来找到了这个org.in2bits.MyXls  ,需要导入这个dll(网上有很多),然后用着还挺好...

【Unity3D】实现太阳系

    实践要求:写一个程序,实现一个完整的太阳系,其他星球围绕太阳的转速必须不一样,并且不再一个法平面内。     法平面是指过空间曲线的切点,且与切线垂直的平面。要求不在一个法平面内,则在保证所有行星以及太阳在一条轴上时,另外两条轴的比例不相同即可。公转速度在RotateAround参数里面设置。如:     这个程序在课堂程序的基础上完成,使用了预...