Unity3d 如何复制原始图像的一部分
我想将原始图像的选定部分复制到另一个图像 我得到了起始位置和结束位置的百分比,通过它我可以计算出宽度的起始位置和结束位置Unity3d 如何复制原始图像的一部分,unity3d,Unity3d,我想将原始图像的选定部分复制到另一个图像 我得到了起始位置和结束位置的百分比,通过它我可以计算出宽度的起始位置和结束位置 如何将所选零件复制到另一个原始图像?假设它是纹理2D,可以执行以下操作: 计算纹理开始/结束X(dX) 创建一个新的纹理2D(B),大小为dX和全Y 调用A.GetPixels() 在阵列上迭代,将像素复制到新纹理 应用于新纹理 伪代码: var aPixels = aTexture.GetPixels(); var bWidth = endX - startX; var b
如何将所选零件复制到另一个原始图像?假设它是
纹理2D
,可以执行以下操作:
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();
var aPixels=aTexture.GetPixels();
var bWidth=endX-startX;
var bTexture=新纹理2d(bWidth,endY);
var bPixels=bTexture.GetPixels();
用于(int x=startX;x
请注意,我的代码很可能无法工作;当我在手机上输入时。通常,图像处理对于CPU来说是一个昂贵的过程,所以我不建议在Unity中使用它,
但无论如何,对于您的图像,在这种特殊情况下,我认为您可以通过更改材质中纹理的大小和偏移来裁剪图像。
更新:
这是我提到的一个例子:
您可以根据在纹理上拖动鼠标的位置计算平铺和偏移。我找到了这个。 您可以将开始坐标、宽度和高度设置为GetPixels()
void Start(){
公共纹理2D纹理;
Color[]c=mTexture.GetPixels(startX、startY、width、height);
纹理2d m2Texture=新纹理2d(宽度、高度);
m2Texture.SetPixels(c);
m2Texture.Apply();
gameObject.GetComponent().material.mainTexture=m2Texture;
}
```
有道理,但无法使用它。当你有机会的时候,你能详细写一下吗?
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;
}
```