Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将atlas切割成单独的PNG,以便在本地保存_C#_Unity3d - Fatal编程技术网

C# 将atlas切割成单独的PNG,以便在本地保存

C# 将atlas切割成单独的PNG,以便在本地保存,c#,unity3d,C#,Unity3d,我正在寻找一种方法,从atlas中定位纹理/精灵,以单独保存它们。我制作了一个脚本,从项目中获取所有Texture2d项目并将它们保存为PNG,但我不知道如何从atlas中获取单个精灵,将它们保存为单独的PNG 在“项目”选项卡中,我可以看到atlas中的所有精灵。我可以在代码中以这些精灵为目标来保存它们吗 编辑: 我离解决我的问题越来越近了。我使用以下代码搜索场景中的所有精灵: guids = AssetDatabase.FindAssets ("t:Sprite", null); 然后,当

我正在寻找一种方法,从atlas中定位纹理/精灵,以单独保存它们。我制作了一个脚本,从项目中获取所有Texture2d项目并将它们保存为PNG,但我不知道如何从atlas中获取单个精灵,将它们保存为单独的PNG

在“项目”选项卡中,我可以看到atlas中的所有精灵。我可以在代码中以这些精灵为目标来保存它们吗

编辑:

我离解决我的问题越来越近了。我使用以下代码搜索场景中的所有精灵:

guids = AssetDatabase.FindAssets ("t:Sprite", null);
然后,当我导出时,我可以根据
guid
的大小得到精灵的总数。 为了进行测试,我创建了一个按钮,用于创建游戏对象,并使用取自
guids
的精灵向其添加一个精灵渲染器。像这样:

foreach ( string guid in guids)
{
    string itemName = AssetDatabase.GUIDToAssetPath(guid);

    Sprite s = Resources.LoadAssetAtPath<Sprite> ( itemName ) as Sprite;

    var go = new GameObject();
    var spriteRenderer = go.AddComponent<SpriteRenderer>() as SpriteRenderer;
    spriteRenderer.sprite = s;
}
foreach(guids中的字符串guid)
{
string itemName=AssetDatabase.GUIDToAssetPath(guid);
Sprite s=Resources.loadAssetPath(itemName)作为Sprite;
var go=新游戏对象();
var spriteRenderer=go.AddComponent()作为spriteRenderer;
spriteRenderer.sprite=s;
}
正如预期的那样,所有精灵都已添加。但是,如果我试图保存他们的纹理,我会再次将整个纹理作为一个图集,而不是我感兴趣的部分

所以我决定制作一个新的纹理2D,然后将其导出。在这个新的Texture2d中,我希望使大小等于目标精灵的大小(可以工作),并从精灵的边界复制像素(固定在这里)。我不知道如何实际获得每个精灵的偏移量和边界。Sprite类中没有一个方法可以帮助实现这一点


所以现在我想知道如何从一个精灵的边界复制像素,而不是从它拥有的整个地图集复制像素。

你有地图集中精灵的坐标和大小,作为
.xml
.json
文件吗?不,我相信它是由统一自动剪切的。如果你知道坐标,那么它将易于使用和,否则,您可以编写一个编辑器工具来输入自定义坐标?