コード例 #1
0
    void updateSprite(SpriteRenderer spriteRenderer, AlphaMaskScript mask)
    {
        Texture2D a = mask.clipTexture;
        Texture2D b = spriteRenderer.sprite.texture;
        float w1 = (float)a.width;
        float h1 = (float)a.height;
        float w2 = (float)b.width;
        float h2 = (float)b.height;
        float xScale = h1 / h2;
        float yScale = w1 / w2;
        float adjustScale = xScale > yScale ? yScale : xScale;
        xScale = xScale / adjustScale / mask.scale;
        yScale = yScale / adjustScale / mask.scale;
        float xOffset = mask.xOffsetPixel / w2;
        float yOffset = mask.yOffsetPixel / h2;

        var mat = new Material(Shader.Find("Unlit/AlphaMask"));
        mat.name = mask.ToName();
        mat.SetTexture("_ClipTex", mask.clipTexture);
        mat.SetFloat("_xScale", xScale);
        mat.SetFloat("_yScale", yScale);
        mat.SetFloat("_xOffset", xOffset);
        mat.SetFloat("_yOffset", yOffset);

        spriteRenderer.sharedMaterial = mat;

        Debug.Log(string.Format(
            "update alpha mask target={0}x{1} mask={2}x{3}",
            w1,
            h1,
            w2,
            h2
        ));
    }
コード例 #2
0
 bool check(SpriteRenderer spriteRenderer, AlphaMaskScript mask)
 {
     if(mask.clipTexture == null)
     {
         GUILayout.Label("mask texture not found");
         return false;
     }
     if(spriteRenderer.sprite == null)
     {
         GUILayout.Label("render texture not found");
         return false;
     }
     var mat = spriteRenderer.sharedMaterial;
     if(mat.name == mask.ToName())
     {
         return false;
     }
     return true;
 }
コード例 #3
0
    bool check(SpriteRenderer spriteRenderer, AlphaMaskScript mask)
    {
        if (mask.clipTexture == null)
        {
            GUILayout.Label("mask texture not found");
            return(false);
        }
        if (spriteRenderer.sprite == null)
        {
            GUILayout.Label("render texture not found");
            return(false);
        }
        var mat = spriteRenderer.sharedMaterial;

        if (mat.name == mask.ToName())
        {
            return(false);
        }
        return(true);
    }
コード例 #4
0
    void updateSprite(SpriteRenderer spriteRenderer, AlphaMaskScript mask)
    {
        Texture2D a           = mask.clipTexture;
        Texture2D b           = spriteRenderer.sprite.texture;
        float     w1          = (float)a.width;
        float     h1          = (float)a.height;
        float     w2          = (float)b.width;
        float     h2          = (float)b.height;
        float     xScale      = h1 / h2;
        float     yScale      = w1 / w2;
        float     adjustScale = xScale > yScale ? yScale : xScale;

        xScale = xScale / adjustScale / mask.scale;
        yScale = yScale / adjustScale / mask.scale;
        float xOffset = mask.xOffsetPixel / w2;
        float yOffset = mask.yOffsetPixel / h2;

        var mat = new Material(Shader.Find("Unlit/AlphaMask"));

        mat.name = mask.ToName();
        mat.SetTexture("_ClipTex", mask.clipTexture);
        mat.SetFloat("_xScale", xScale);
        mat.SetFloat("_yScale", yScale);
        mat.SetFloat("_xOffset", xOffset);
        mat.SetFloat("_yOffset", yOffset);

        spriteRenderer.sharedMaterial = mat;

        Debug.Log(string.Format(
                      "update alpha mask target={0}x{1} mask={2}x{3}",
                      w1,
                      h1,
                      w2,
                      h2
                      ));
    }