Mask Button

»ç°¢Çü ¸ð¾çÀÇ ¹öÆ° ÀÌ¿ÜÀÇ ´Ù¾çÇÑ ¸ð¾çÀÇ ¹öÆ°À» ¸¸µé¾î º¸ÀÚ.
Mask ÄÄÆ÷³ÍÆ®¸¦ »ç¿ëÇÏ¸é ¾ËÆÄ À̹ÌÁö¸¦ ¸¶½ºÅ· ÇÒ¼ö ÀÖ´Ù.

¸¶½ºÅ· À̹ÌÁö¸¦ »ç¿ëÇؼ­ ´ÙÀ½°ú °°Àº ¹öÆ°À» ¸¸µé¼ö ÀÖ´Ù.



´Ü°èº°·Î ¾Ë¾Æº¸ÀÚ.

1. °èÃþ ±¸Á¶¸¦ ´ÙÀ½°ú °°ÀÌ ¸¸µç´Ù.



Image : UI-Image Ãß°¡
           ¸¶½ºÅ·ÇÒ À̹ÌÁö¸¦ ¼³Á¤ÇÒ ¿ÀºêÁ§Æ®
Button:  UI-Button Ãß°¡

Image ÀÚ½ÄÀ¸·Î Ãß°¡µÈ ¿ÀºêÁ§Æ®´Â ¸¶½ºÅ· À̹ÌÁö¿¡ ÀÇÇؼ­ À̹ÌÁö°¡ ¸¶½ºÅ· µÈ´Ù.
¸¶½ºÅ·Àº À̹ÌÁöÀÇ ¾ËÆÄ°ª¿¡ ÀÇÇØ ¼³Á¤ µÈ´Ù.

2. ¸¶½ºÅ· À̹ÌÁö¸¦  Image ¿ÀºêÁ§Æ®¿¡ Ãß°¡ÇÑ´Ù.



3. Mask ÄÄÆ÷³ÍÆ®¸¦ Image ¿ÀºêÁ§Æ®¿¡ Ãß°¡ÇÑ´Ù.



4. ¹öÆ° À̹ÌÁö¸¦ ¹öÆ°¿¡ Ãß°¡ÇÑ´Ù.



5. ¹öÆ° Click À̺¥Æ®¿¡ ÇÔ¼ö¸¦ Ãß°¡ÇÑ´Ù.

¹öÆ°ÀÌ Å¬¸¯ µÇ¾úÀ»¶§ ·Î±×¸¦ Ãß°¡ÇÑ´Ù.




using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ButtonTest : MonoBehaviour {
    public void OnButtonEvent()
    {
        Debug.Log("Button Clicked!!!");
    }
}

½ÇÇà)
¿©±â±îÁö ÀÛ¾÷ ÈÄ ½ÇÇà ÇÏ¸é º¸ÀÌÁö ¾Ê´Â ¿µ¿ª¿¡¼­ ¸¶¿ì½º Ŭ¸¯Çصµ "Button Clicked!!! À̺¥Æ®°¡ ¹ß»ý µÈ´Ù.
À̹ÌÁö¸¸ ¸¶½ºÅ· µÇ¾úÁö, À̺¥Æ®°¡ ¸¶½ºÅ· µÈ°Ç ¾Æ´Ï´Ù.
´Ù¸¥ °³¹ßÀÚ°¡ ÀÛ¾÷ÇÑ Äڵ尡 ÀÌ¹Ì Á¸ÀçÇϱ⠶§¹®¿¡ ´Ù¿î·Î¸¦ ¹Þ¾Æ¼­ Ãß°¡ÇÏ¸é µÈ´Ù.

6. RaycastMask ÄÄÆ÷³ÍÆ® Ãß°¡ Çϱâ



´Ù¿î·Îµå ¹ÞÀº RaycastMask ÄÄÆ÷³ÍÆ®¸¦ Mask ÄÄÆ÷³ÍÆ®°¡ ÀÖ´Â ¿ÀºêÁ§Æ®¿¡ °°ÀÌ Ãß°¡ÇÑ´Ù.

RaycastMask.cs´Â senritsu´ÔÀÌ ¸¸µç ÄÚµåÀÌ´Ù.
ÀÌ ÄÚµå´Â UnityUIExtensions¿¡µµ µé¾î°¡ ÀÖ´Ù. ¿©±â¿¡´Â ¿ö´×ÀÌ Á¦°ÅµÈ ÄÚµåÀÌ´Ù.
UnityUIExtensions¿¡¼­ ´Ù¿î·Îµå ¹Þ¾Æ¼­ Ãß°¡ÇÑ´Ù.

´Ù¿î·Îµå:
https://bitbucket.org/UnityUIExtensions/unity-ui-extensions/src/master/Scripts/Effects/RaycastMask.cs


½ÇÇà )
¿©±â±îÁö ÀÛ¾÷ ÈÄ ½ÇÇà ÈÄ, ¸¶¿ì½º·Î ¹öÆ°À» Ŭ¸¯ÇÏ¸é ´ÙÀ½ ¸Þ¼¼Áö°¡ ¶á´Ù.
Mask texture not readable, set your sprite to Texture Type 'Advanced' and check 'Read/Write Enabled'
¸¶½ºÅ· À̹ÌÁö¸¦ Read/Write ÇÒ¼ö ÀÖµµ·Ï ¼öÁ¤ÇØ¾ß ÇÑ´Ù.


7. ¸¶½ºÅ· À̹ÌÁö¸¦ Read/Write ¿É¼ÇÀ¸·Î ¹Ù²Û´Ù.



https://github.com/senritsu/unitility/blob/master/Assets/Unitility/GUI/RaycastMask.cs
https://github.com/sarbian/KSPUIHelper/blob/master/unity-ui-extensions/Effects/RaycastMask.cs