思路很low,把贴图分开成两张贴图再创建两个精灵将贴图覆盖上去,因为一直没做过2D的东西,发现查缺补漏的地方还不少,记录下。
这里只简单的分了上下两片
void Cut(Vector3 a, Vector3 b)
{
if (oriSR == null)
oriSR = transform.GetComponent<SpriteRenderer>();
Texture2D textureSP = oriSR.sprite.texture;
Texture2D texUL, texDR;
int texX, texY;
texX = textureSP.width;
texY = textureSP.height;
texUL = new Texture2D(textureSP.width, textureSP.height);
texDR = new Texture2D(textureSP.width, textureSP.height);
print(textureSP.GetPixel(1000, 400) + " " + textureSP.GetPixel(400,1000));
for (int x = 0; x < texX; x++)
{
for (int y = 0; y < texY; y++)
{
if (y > texY/2)
{
texUL.SetPixel(x, y, textureSP.GetPixel(x,y));
texDR.SetPixel(x, y, Color.clear);
}
else
{
texDR.SetPixel(x, y, textureSP.GetPixel(x, y));
texUL.SetPixel(x, y, Color.clear);
}
}
}
texUL.Apply();
texDR.Apply();
NewSprite(texUL);
NewSprite(texDR);
}
上面代码重点记录两个东西,第一,贴图需要在Advanced中改为可读,第二贴图处理完成后要Apply,下次不要在这耽误时间了。
下面为精灵的创建方法,主要就是Sprite.Create花了好长时间
GameObject NewSprite(Texture2D tex)
{
GameObject spriteC = Instantiate(transform.gameObject);
spriteC.GetComponent<SpriteRenderer>().sprite= Sprite.Create(tex,new Rect(0,0,tex.width,tex.height),Vector2.zero);
return null;
}