Unity3d 如何在统一中分割图像

Unity3d 如何在统一中分割图像,unity3d,unity-webgl,Unity3d,Unity Webgl,我想用c#为这个图像设置动画。精灵编辑器不适合我,因为我希望它是一个动态系统。 如果有这样的方法,如果您能与我分享,我将不胜感激。如果您所说的所有源和目标平铺图像都具有已知的尺寸,您可以这样做,例如 如果您需要它们作为Texture2Ds(更昂贵且内存更大) public Texture2D[]SplitTextureToTextures(Texture2D源,Vector2Int tileSize) { //获取源维度 var sourceWidth=source.width; var sou

我想用c#为这个图像设置动画。精灵编辑器不适合我,因为我希望它是一个动态系统。
如果有这样的方法,如果您能与我分享,我将不胜感激。

如果您所说的所有源和目标平铺图像都具有已知的尺寸,您可以这样做,例如

如果您需要它们作为
Texture2D
s(更昂贵且内存更大)

public Texture2D[]SplitTextureToTextures(Texture2D源,Vector2Int tileSize)
{
//获取源维度
var sourceWidth=source.width;
var sourceHeight=source.height;
//检查给定的瓷砖大小与图像的匹配频率
var tileAmountX=Mathf.floorPoint(sourceWidth/(float)tileSize.x);
var tileAmountY=Mathf.floorPoint(sourceHeight/(float)tileSize.y);
var输出=新纹理2D[tileAmountX*tileAmountY];
//在平铺中水平迭代,然后垂直迭代
//从左上角的平铺开始
对于(变量y=tileAmountY-1;y>=0;y--)
{
对于(var x=0;x
或者如果您需要它们作为
Sprite
s

public Sprite[]SplitTextureToSprites(Texture2D源,Vector2Int tileSize)
{
//获取源维度
var sourceWidth=source.width;
var sourceHeight=source.height;
//检查给定的瓷砖大小与图像的匹配频率
var tileAmountX=Mathf.floorPoint(sourceWidth/(float)tileSize.x);
var tileAmountY=Mathf.floorPoint(sourceHeight/(float)tileSize.y);
var输出=新纹理2D[tileAmountX*tileAmountY];
//在平铺中水平迭代,然后垂直迭代
//从左上角的平铺开始
对于(变量y=tileAmountY-1;y>=0;y--)
{
对于(var x=0;x
我认为你的方法很难,但如果你真的想这样做,你可以计算你想要使用的面积,通过
新建纹理2D(宽度、高度)
创建新纹理,并将其分配给
精灵
。有多个这样的图像,我认为为每个图像创建一个精灵是没有意义的。我想用代码将这张图片分割成动态图片。请参阅@MarkSouls comment。是的,如果您事先知道Rect像素的大小,您可以从给定的纹理中剪切纹理或精灵。但是,如果你正在寻找一种适用于任何给定图像比例的动态图像。。。不,这会很棘手,所以。。所有输入图像的尺寸是否相同,是否始终要将它们分割为相同大小的部分?右边的空白区域呢?所有图像的间距和大小都是一样的。我想分割相同大小的图像。这能回答你的问题吗?