스파르타 게임개발종합반(Unity)/TIL - 본캠프 매일 공부 기록

2024.08.14 TIL - UI Mask 구멍내기

테크러너 2024. 8. 14.

 

부모가 내가 뚫을 구멍이다.

구멍의 크기와 SourceImage를 지정한다.

Mask 컴포넌트를 넣고, Show Mask Garphic은 끄기.

 

자식은 Width와 Height를 지정해줘도 되고 코드로 지정해줘도 된다.

나는 캔버스의 크기를 가져와서 코드로 지정해줬다.

 

using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.UI;

public class CutoutMaskUI : Image
{
    public void SetToCanvasSize()
    {
        Canvas canvas = GetComponentInParent<Canvas>();
        if (canvas != null)
        {
            RectTransform canvasRectTransform = canvas.GetComponent<RectTransform>();
            RectTransform rectTransform = this.GetComponent<RectTransform>();

            rectTransform.sizeDelta = new Vector2(canvasRectTransform.rect.width, canvasRectTransform.rect.height);
            rectTransform.pivot = new Vector2(0.5f, 0.5f);
            rectTransform.position = canvasRectTransform.position;
        }
    }

    public override Material materialForRendering{
        get
        {
            Material material = new Material(base.materialForRendering);
            material.SetInt("_StencilComp", (int)CompareFunction.NotEqual);
            return material;
        }
    }
}

 

 

결과는 아래와 같다.

반응형

댓글