假设它是一个 Texture2D
您可以做以下工作。
A.GetPixels()
伪代码。
var aPixels = aTexture.GetPixels();
var bWidth = endX - startX;
var bTexture = new Texture2D(bWidth, endY);
var bPixels = bTexture.GetPixels();
for (int x = startX; x < endX; x++)
{
for (int y = 0; y < endY; y++)
{
var aIndex = x + y * A.width;
var bIndex = (x - startX) + y * bWidth;
bPixels[bIndex] = aPixels[aIndex];
}
}
bTexture.Apply();
请注意,我的代码很可能无法使用,因为我是在手机上打的。
通常情况下,图像处理对于CPU来说是一个昂贵的过程,所以我不建议在Unity中使用,但无论如何,对于你的图像和这种特殊情况,我认为你可以通过改变材质中纹理的尺寸和偏移来裁剪你的图像。
更新。这是我提到的一个例子。你可以根据鼠标在纹理上拖动的位置来计算Tile和Offset. (查看这里)
我发现这个.你可以用GetPixels()来设置起始坐标和宽高。
void Start () {
public Texture2D mTexture;
Color[] c = mTexture.GetPixels (startX, startY, width, height);
Texture2D m2Texture = new Texture2D (width, height);
m2Texture.SetPixels (c);
m2Texture.Apply ();
gameObject.GetComponent<MeshRenderer> ().material.mainTexture = m2Texture;
}
```