Unity3D Sprite(精灵)分割

本文介绍了一种使用Unity进行2D贴图分割的方法,通过将原始贴图分为上下两部分并创建相应的精灵,实现了贴图的有效利用。文中详细记录了具体的实现步骤和技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路很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;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值