Unity¤Ë´ØÏ¢¤¹¤ëµ­»ö¤Ç¤¹

¥Ç¥ê¥²¡¼¥È¤È¤Ï¡©


¡¡¥Ç¥ê¥²¡¼¥È¡Êdelegate: ÂåÍý¡¢°Ñ¾ù¡¢°ÑÂ÷¡Ë¤È¤Ï¡¢¥á¥½¥Ã¥É¤ò»²¾È¤¹¤ë¤¿¤á¤Î·¿¤Ç¤¹¡£
ÊÑ¿ô¤È¤·¤ÆÀë¸À¤¹¤ë¤³¤È¤Ç¡¢ÊÑ¿ôÆâ¤Ë¥á¥½¥Ã¥É¤òÂåÆþ¤ò¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£


»²¹Í¥µ¥¤¥È
MicroSoft
¥Ç¥ê¥²¡¼¥È (C# ¥×¥í¥°¥é¥ß¥ó¥° ¥¬¥¤¥É)
++C++; // ̤³ÎǧÈô¹Ô C ÍÍ
¥Ç¥ê¥²¡¼¥È



¡¡¥Ç¥ê¥²¡¼¥È¤Ï¡¢ÅÅÏäǥԥ¶¤òÃíʸ¤¹¤ë¥×¥í¥»¥¹¤ËÎ㤨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¡¡£±¡¥¤¢¤Ê¤¿¤¬¡ÖÅÅÏäǥԥ¶²°¤ËÃíʸ¤ò¤¹¤ë(Ãíʸ¥á¥½¥Ã¥É)¡×Âå¤ï¤ê¤Ë¡¢Í§Ã£¤ËÍê¤à¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
¡¡£²¡¥Í§Ã£¤Ï¡¢¤¢¤Ê¤¿¤¬»ØÄꤷ¤¿¥Ô¥¶²°¤ËÅÅÏä·¤ÆÃíʸ¤ò¤·¤Þ¤¹¡£

¡¡¤³¤ÎÎã¤Ç¤Ï¡¢Í§Ã£¤¬¥Ç¥ê¥²¡¼¥È¡ÊÂåÍý¿Í¡Ë¤ÎÌò³ä¤ò²Ì¤¿¤·¤Æ¤¤¤Þ¤¹¡£

¡¡Æ±Íͤˡ¢C#¤Î¥Ç¥ê¥²¡¼¥È¤Ï¡¢»²¾È¤·¤Æ¤¤¤ë¥á¥½¥Ã¥É¤ò¡¢Âå¤ï¤ê¤Ë¸Æ¤Ó½Ð¤¹Ìò³ä¤ò²Ì¤¿¤·¤Þ¤¹¡£


¥Ç¥ê¥²¡¼¥È¤ÎÄêµÁ


¡¡¥Ç¥ê¥²¡¼¥È¤Ï¡¢¼¡¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Þ¤¹¡£

¥¢¥¯¥»¥¹½¤¾þ»Ò delegate Ìá¤êÃͤη¿ ¥Ç¥ê¥²¡¼¥È·¿Ì¾(°ú¿ô¥ê¥¹¥È);

¡¡¤³¤ÎÄêµÁ¤ò¸µ¤Ë¡¢¼«Í³¤Ë¥Ç¥ê¥²¡¼¥È¤ÎÄêµÁ¤ò¹Ô¤¦¤³¤È¤ÇºîÀ®¤¬½ÐÍè¤Þ¤¹¡£

¡ãÎã¡ä
public delegate void MyDelegate();

¡¡¤³¤ì¤Ï¡¢Ìá¤êÃͤ¬void¤Ç¡¢°ú¿ô¤¬¤Ê¤¤¥á¥½¥Ã¥É¤ò»²¾È¤¹¤ë¥Ç¥ê¥²¡¼¥ÈMyDelegate¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£



¥Ç¥ê¥²¡¼¥È¤Î»ÈÍÑ


¡¡ÄêµÁ¤·¤¿¥Ç¥ê¥²¡¼¥È¤Ï¡¢¥¯¥é¥¹¤ä¹½Â¤ÂΤÈƱ¤¸¤è¤¦¤Ë¡¢£±¤Ä¤Î¡È·¿¡É¤È¤·¤Æ°·¤ï¤ì¤Þ¤¹¡£

¡¡Àè¤Û¤É¤ÎMyDelegate·¿¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òºîÀ®¤·¤¿¾ì¹ç¡¢Ìá¤êÃͤ¬void ¤Ç¡¢°ú¿ô¤¬¤Ê¤¤¥á¥½¥Ã¥É¤òÂåÆþ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£



¡¡¥Ç¥ê¥²¡¼¥È¤ò»ÈÍѤ¹¤ë¤Ë¤Ï¡¢¤Þ¤ºÂбþ¤¹¤ë(ÂåÆþ¤¹¤ë)¥á¥½¥Ã¥É¤òÄêµÁ¤·¤Þ¤¹¡£


public void PrintHello()
{
    Console.WriteLine("Hello!");
}

¡¡¤³¤Î¥á¥½¥Ã¥É¤âÌá¤êÃÍ¤Ï void ¤Ç¡¢°ú¿ô¤Ï¤¢¤ê¤Þ¤»¤ó¡£
¤½¤Î¤¿¤á¡¢MyDelegate·¿¤ÎÄêµÁ¤ÈƱ¤¸¤Ç¤¢¤ë¤¿¤á¡¢MyDelegate·¿¤ËÂåÆþ¤Ç¤­¤ë¥á¥½¥Ã¥É¤Ë¤Ê¤ê¤Þ¤¹¡£



¡¡¼¡¤Ë¡¢¥Ç¥ê¥²¡¼¥È¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òºîÀ®¤·¡¢¥á¥½¥Ã¥É¤ò¥Ç¥ê¥²¡¼¥È¤Ë³ä¤êÅö¤Æ¤Þ¤¹(ÂåÆþ¤·¤Þ¤¹)¡£
new ¤ÏÉÔÍפǡ¢ÊÑ¿ô¤ËÂФ·¤Æ¥á¥½¥Ã¥É¤òÂåÆþ¤¹¤ë½èÍý¤òµ­½Ò¤·¤Þ¤¹¡£

MyDelegate myDelegate = PrintHello;

¡¡ÂåÆþ¤¹¤ë¥á¥½¥Ã¥É¤Ï°ú¿ô¤Ï¤Ê¤¤¾õÂ֤ǡ¢¥á¥½¥Ã¥É̾¤Î¤ß¤òµ­½Ò¤·¤Þ¤¹¡£



¡¡ºÇ¸å¤Ë¡¢¥Ç¥ê¥²¡¼¥È¤ò¼Â¹Ô¤·¤Æ¡¢³ä¤êÅö¤Æ¤é¤ì¤¿(ÂåÆþ¤µ¤ì¤¿)¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£


myDelegate();

¡¡¥Ç¥ê¥²¡¼¥È¤Î·¿¤Ë () ¤ò¼Â¹Ô¤¹¤ë¤³¤È¤Ç¥á¥½¥Ã¥É¤¬¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£

¡¡¤³¤ÎÎã¤Ç¤Ï¡¢myDelegate ¥Ç¥ê¥²¡¼¥È¤ò¼Â¹Ô¤¹¤ë¤³¤È¤Ç¡¢»²¾È¤·¤Æ¤¤¤ë(ÂåÆþ¤µ¤ì¤Æ¤¤¤ë) PrintHello¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¡¢"Hello!"¤È½ÐÎϤ·¤Þ¤¹¡£



¡¡¤½¤ì¤Ç¤Ï¾åµ­¤ÎÀâÌÀ¤ò¸µ¤Ë¡¢¥µ¥ó¥×¥ë¥³¡¼¥É¤òÄ󼨤·¤Þ¤¹¡£


using UnityEngine;

public class DelegateExample : MonoBehaviour
{
    // ¥Ç¥ê¥²¡¼¥È¤ÎÄêµÁ
    public delegate void MyDelegate();


    void Start()
    {
        // ¥Ç¥ê¥²¡¼¥È¤Ë¥á¥½¥Ã¥É¤ò³ä¤êÅö¤Æ¤ë
        MyDelegate myDelegate = PrintHello;

        // ¥Ç¥ê¥²¡¼¥È¤ò¼Â¹Ô¤¹¤ë
        myDelegate();
    }

    // ¥Ç¥ê¥²¡¼¥È¤Ë³ä¤êÅö¤Æ¤ë¥á¥½¥Ã¥É
    void PrintHello()
    {
        Debug.Log("Hello!");
    }
}

¡¡Àè¤Û¤É¤ÎÀâÌÀ¤È¥½¡¼¥¹¥³¡¼¥É¤È¤Î³Îǧ¤·¤Ê¤¬¤é¡¢¤É¤Î¤è¤¦¤Êµ¡Ç½¤È¤·¤Æ¥Ç¥ê¥²¡¼¥È¤Î½èÍý¤¬Æ°¤¤¤Æ¤¤¤ë¤Î¤«¤ò¥¤¥á¡¼¥¸¤·¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£


¥Ç¥ê¥²¡¼¥È¤È¥¤¥Ù¥ó¥È


¡¡¥Ç¥ê¥²¡¼¥È¤Ï¡¢¥¤¥Ù¥ó¥È¤Î¥Ï¥ó¥É¥é¤È¤·¤Æ¤â»ÈÍѤµ¤ì¤Þ¤¹¡£
Î㤨¤Ð¡¢¥Ü¥¿¥ó¥¯¥ê¥Ã¥¯¥¤¥Ù¥ó¥È¤Ë¥Ç¥ê¥²¡¼¥È¤ò»ÈÍѤ·¤Æ¡¢¥¯¥ê¥Ã¥¯¤µ¤ì¤¿¤È¤­¤ËÆÃÄê¤Î¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£



¡¡ºÇ½é¤Ë¥¤¥Ù¥ó¥È¥Ï¥ó¥É¥é¤È¥¤¥Ù¥ó¥È¥ê¥¹¥Ê¤Ë¤Ä¤¤¤Æ´Êñ¤ËÀâÌÀ¤·¤Þ¤¹¡£

¡¡¥¤¥Ù¥ó¥È¥Ï¥ó¥É¥é¤È¤Ï¡¢ÆÃÄê¤Î¥¤¥Ù¥ó¥È¤¬È¯À¸¤·¤¿¤È¤­¤Ë¼Â¹Ô¤µ¤ì¤ë¥á¥½¥Ã¥É¤Î¤³¤È¤ò»Ø¤·¤Þ¤¹¡£
Î㤨¤Ð¡¢¥Ü¥¿¥ó¤¬¥¯¥ê¥Ã¥¯¤µ¤ì¤¿¤È¤­¤Ë¼Â¹Ô¤¹¤ë½èÍý¤ò½ñ¤¤¤¿¥á¥½¥Ã¥É¤Ï¡¢¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¥¤¥Ù¥ó¥È¤Î¥Ï¥ó¥É¥é¤È¤Ê¤ê¤Þ¤¹¡£

¡¡¥¤¥Ù¥ó¥È¤¬È¯À¸¤·¤¿¤È¤­¤Ë¡¢¤½¤ì¤ËÂбþ¤¹¤ë¥á¥½¥Ã¥É¡Ê¥¤¥Ù¥ó¥È¥Ï¥ó¥É¥é¡Ë¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤Ë¤Ï¡¢¤½¤Î¥á¥½¥Ã¥É¤Ø¤Î»²¾È¤¬É¬ÍפǤ¹¡£
¥Ç¥ê¥²¡¼¥È¤Ï¤Þ¤µ¤Ë¤½¤Î¤¿¤á¤Î¤â¤Î¤Ç¡¢¥á¥½¥Ã¥É¤Ø¤Î»²¾È¤òÊÝ»ý¤·¡¢É¬ÍפʤȤ­¤Ë¤½¤Î¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

¡¡¤·¤¿¤¬¤Ã¤Æ¡¢¥Ç¥ê¥²¡¼¥È¤Ï¥¤¥Ù¥ó¥È¶îÆ°·¿¥×¥í¥°¥é¥ß¥ó¥°¤Ë¤ª¤¤¤ÆÈó¾ï¤Ë½ÅÍפÊÌò³ä¤ò²Ì¤¿¤·¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢¥¤¥Ù¥ó¥È¤¬È¯À¸¤·¤¿¤È¤­¤ËÆÃÄê¤Î¥¢¥¯¥·¥ç¥ó¤òưŪ¤Ë³ä¤êÅö¤Æ¤¿¤ê¡¢Êѹ¹¤·¤¿¤ê¤¹¤ë¤³¤È¤¬²Äǽ¤È¤Ê¤ê¤Þ¤¹¡£



¡¡¥¤¥Ù¥ó¥È¥ê¥¹¥Ê¤È¤Ï¡¢ÆÃÄê¤Î¥¤¥Ù¥ó¥È¤ò´Æ»ë¤·¤Æ¡¢¤½¤Î¥¤¥Ù¥ó¥È¤¬È¯À¸¤·¤¿¤È¤­¤Ë¥¤¥Ù¥ó¥È¥Ï¥ó¥É¥é¤ò¸Æ¤Ó½Ð¤¹»ÅÁȤߤΤ³¤È¤ò»Ø¤·¤Þ¤¹¡£
¥ê¥¹¥Ê¤Ï¡Ö¥ê¥¹¥Ë¥ó¥°¡×¤Ä¤Þ¤ê¡Öʹ¤­¼ª¤òΩ¤Æ¤Æ¤¤¤ë¡×¤³¤È¤«¤é̾ÉÕ¤±¤é¤ì¤Æ¤¤¤Þ¤¹¡£
¥ê¥¹¥Ê¤Ï¥¤¥Ù¥ó¥È¤ò¡Öʹ¤¤¤Æ¡×¡¢¤½¤Î¥¤¥Ù¥ó¥È¤¬È¯À¸¤·¤¿¤È¤­¤ËŬÀڤʥϥó¥É¥é¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

¡¡Î㤨¤Ð¥Ü¥¿¥ó¤Î¥¤¥Ù¥ó¥È¤Ç¤¢¤ì¤Ð¡¢¡Ö¥Ü¥¿¥ó¤ò²¡¤¹¡×¤È¤¤¤¦½èÍý¤òÆÃÄê¤Î¥¤¥Ù¥ó¥È¤È¤ß¤Ê¤·¡¢¤½¤ì¤ò´Æ»ë¤¹¤ëÌòÌܤ¬¥¤¥Ù¥ó¥È¥ê¥¹¥Ê¤Ç¤¹¡£

¡¡¥Ü¥¿¥ó¤Î¾ì¹ç¤Ë¤Ï¡¢AddListener ¥á¥½¥Ã¥É¤¬ÍÑ°Õ¤µ¤ì¤Æ¤ª¤ê¡¢¤³¤Î°ú¿ô¤Ë¤Ï¥Ç¥ê¥²¡¼¥È¤È¤·¤Æ¥á¥½¥Ã¥É¤¬ÅÐÏ¿¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤¬¥¤¥Ù¥ó¥È¥ê¥¹¥Ê¤È¤·¤Æµ¡Ç½¤·¤Þ¤¹¡£



¡¡¤½¤ì¤Ç¤Ï¡¢¥Ü¥¿¥ó¤ò»È¤Ã¤¿¥¤¥Ù¥ó¥È¤Î´Êñ¤Ê¼ÂÁõÎã¤ÈµóÆ°¤ò³Îǧ¤¹¤ë¥µ¥ó¥×¥ë¥³¡¼¥É¤òÄ󼨤·¤Þ¤¹¡£


using UnityEngine;
using UnityEngine.UI;

public class ButtonExample : MonoBehaviour
{
    public Button button;

    private void Start()
    {
        button.onClick.AddListener(OnButtonClick);¡¡//¡¡¥¤¥Ù¥ó¥È¥ê¥¹¥Ê¤Ë¤¢¤¿¤ë¡¢¡Ö¥Ü¥¿¥ó¤ò²¡¤·¤¿¤é¡×¤È¤¤¤¦ÆÃÄê¤Î¥¤¥Ù¥ó¥È¤ò´Æ»ë¤¹¤ë½èÍý
    }

    private void OnButtonClick()¡¡¡¡//¡¡¢«¡¡¥Ü¥¿¥ó¤Î¥¤¥Ù¥ó¥È¤Î¥¤¥Ù¥ó¥È¥Ï¥ó¥É¥é¤Ë¤¢¤¿¤ë¡¢¥Ç¥ê¥²¡¼¥È¤·¤ÆÍøÍѤ¹¤ë¥á¥½¥Ã¥É
    {
        Debug.Log("¥Ü¥¿¥ó¤¬¥¯¥ê¥Ã¥¯¤µ¤ì¤Þ¤·¤¿¡£");
    }
}
¡¡
¡¡¤³¤Î¥¹¥¯¥ê¥×¥È¤Ç¤Ï¡¢Button¥¯¥é¥¹¤ÎonClick¥¤¥Ù¥ó¥È¤ËOnButtonClick¥á¥½¥Ã¥É¤ò AddListener ¥á¥½¥Ã¥É¤ò»È¤Ã¤Æ¡¢¥¤¥Ù¥ó¥È¥ê¥¹¥Ê¤È¤·¤ÆÄɲ䷤Ƥ¤¤Þ¤¹¡£
¤³¤ì¤Ï¥Ç¥ê¥²¡¼¥È¤Î½èÍý¤Ë¤Ê¤Ã¤Æ¤ª¤ê¡¢AddListener ¥á¥½¥Ã¥É¤Ï¡¢OnButtonClick¥á¥½¥Ã¥É¤Ø¤Î»²¾È¤òÊÝ»ý¤·¤Æ¤¤¤Þ¤¹¡£
¤½¤·¤Æ¡Ö¥Ü¥¿¥ó¤¬¥¯¥ê¥Ã¥¯¤µ¤ì¤¿¤È¤­¡×¤Î¥¤¥Ù¥ó¥È¤ò¥ê¥¹¥Ê¤¬´Æ»ë¤·¤Æ¤¤¤Þ¤¹¡£

¡¡¥Ü¥¿¥ó¤¬¥¯¥ê¥Ã¥¯¤µ¤ì¤ë¤È¡¢¥¤¥Ù¥ó¥È¥Ï¥ó¥É¥é¤Ç¤¢¤ë¡¢AddListener ¥á¥½¥Ã¥É¤Î¥Ç¥ê¥²¡¼¥È¤¬»²¾È¤·¤Æ¤¤¤ë OnButtonClick¥á¥½¥Ã¥É¤¬¸Æ¤Ó½Ð¤µ¤ì¡¢
Debug.Log ¥á¥½¥Ã¥É¤¬¼Â¹Ô¤µ¤ì¤Æ¥á¥Ã¥»¡¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£


¡¡
¡¡¤³¤Î¤è¤¦¤Ë¡¢¥Ç¥ê¥²¡¼¥È¤È¥¤¥Ù¥ó¥È¤ò»ÈÍѤ·¤Æ¡¢¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¥¤¥Ù¥ó¥È¤ËÂФ·¤Æ½èÍý¤ò¼Â¹Ô¤·¤Æ¤¤¤Þ¤¹¡£

¡¡¥¤¥Ù¥ó¥È¥ê¥¹¥Ê¤È¥¤¥Ù¥ó¥È¥Ï¥ó¥É¥é¤Ï°ì½ï¤ËÆ°ºî¤·¤Æ¡¢ÆÃÄê¤Î¥¤¥Ù¥ó¥È¤¬È¯À¸¤·¤¿¤È¤­¤ËÆÃÄê¤Î¥³¡¼¥É¤¬¼Â¹Ô¤µ¤ì¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
¤³¤ì¤Ï¥×¥í¥°¥é¥à¤Î¥Õ¥í¡¼¤ò´ÉÍý¤·¡¢ÆÃÄê¤Î¥¤¥Ù¥ó¥È¤ËÂФ·¤Æ½ÀÆð¤ËÂбþ¤¹¤ë¤¿¤á¤Î½ÅÍפʻÅÁȤߤǤ¹¡£


¥Ç¥ê¥²¡¼¥È¤Î¼ïÎà


¡¡C# ¤Ë¤Ï¡¢¤µ¤Þ¤¶¤Þ¤Ê¥Ç¥ê¥²¡¼¥È¤¬ÍÑ°Õ¤µ¤ì¤Æ¤ª¤ê¡¢¤½¤ì¤¾¤ìÆÃÄê¤ÎÌÜŪ¤ä¥·¥Ê¥ê¥ª¤ËŬ¤·¤¿·Á¤Ç»È¤ï¤ì¤Þ¤¹¡£°Ê²¼¤Ï¡¢C#¤Ç°ìÈÌŪ¤Ë»È¤ï¤ì¤ë¥Ç¥ê¥²¡¼¥È¤Î¤¤¤¯¤Ä¤«¤ÎÎã¤Ç¤¹¡£


Func¥Ç¥ê¥²¡¼¥È


¡¡Func¥Ç¥ê¥²¡¼¥È¤Ï¡¢Ìá¤êÃͤò»ý¤Ä¥á¥½¥Ã¥É¤òɽ¤·¤Þ¤¹¡£Func¥Ç¥ê¥²¡¼¥È¤Ï¡¢0¡Á16¸Ä¤Î°ú¿ô¤ò»ý¤Ä¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ºÇ¸å¤Î·¿°ú¿ô¤Ï¡¢Ìá¤êÃͤη¿¤Ç¤¹¡£

Func<T>: °ú¿ô¤ò¤È¤é¤º¡¢T·¿¤ÎÌá¤êÃͤòÊÖ¤¹¥Ç¥ê¥²¡¼¥È¤Ç¤¹¡£
Func<T1, T2>: T1·¿¤Î°ú¿ô¤ò1¤Ä¤È¤ê¡¢T2·¿¤ÎÌá¤êÃͤòÊÖ¤¹¥Ç¥ê¥²¡¼¥È¤Ç¤¹¡£
Func<T1, T2, TResult>: T1·¿¤ÈT2·¿¤Î°ú¿ô¤ò¤½¤ì¤¾¤ì1¤Ä¤º¤Ä¤È¤ê¡¢TResult·¿¤ÎÌá¤êÃͤòÊÖ¤¹¥Ç¥ê¥²¡¼¥È¤Ç¤¹¡£

// °ú¿ô¤¬¤Ê¤¯¡¢int·¿¤ÎÌá¤êÃͤò»ý¤Ä¥á¥½¥Ã¥É¤òɽ¤¹¥Ç¥ê¥²¡¼¥È
Func<int> getInt;

// int·¿¤Î°ú¿ô¤ò1¤Ä¤È¤ê¡¢bool·¿¤ÎÌá¤êÃͤò»ý¤Ä¥á¥½¥Ã¥É¤òɽ¤¹¥Ç¥ê¥²¡¼¥È
Func<int, bool> isEven;

int GetRandomNumber()
{
    return new System.Random().Next(1, 100);
}

bool CheckIfEven(int number)
{
    return number % 2 == 0;
}

void Start()
{
    getInt = GetRandomNumber;
    isEven = CheckIfEven;

    int randomNumber = getInt();
    Debug.Log($"À¸À®¤µ¤ì¤¿¿ôÃÍ: {randomNumber}");
    Debug.Log($"¶ö¿ô¤Ç¤¹¤«¡©: {isEven(randomNumber)}");
}


Action¥Ç¥ê¥²¡¼¥È


¡¡Action¥Ç¥ê¥²¡¼¥È¤Ï¡¢Ìá¤êÃͤ¬¤Ê¤¤¥á¥½¥Ã¥É¡Êvoid¡Ë¤òɽ¤·¤Þ¤¹¡£Action¥Ç¥ê¥²¡¼¥È¤Ï¡¢0¡Á16¸Ä¤Î°ú¿ô¤ò»ý¤Ä¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£


Action: °ú¿ô¤ò¤È¤é¤º¡¢Ìá¤êÃͤ¬¤Ê¤¤¥Ç¥ê¥²¡¼¥È¤Ç¤¹¡£void·¿¤Î¥á¥½¥Ã¥É¤òɽ¤·¤Þ¤¹¡£
Action<T>: T·¿¤Î°ú¿ô¤ò1¤Ä¤È¤ê¡¢Ìá¤êÃͤ¬¤Ê¤¤¥Ç¥ê¥²¡¼¥È¤Ç¤¹¡£
Action<T1, T2>: T1·¿¤ÈT2·¿¤Î°ú¿ô¤ò¤½¤ì¤¾¤ì1¤Ä¤º¤Ä¤È¤ê¡¢Ìá¤êÃͤ¬¤Ê¤¤¥Ç¥ê¥²¡¼¥È¤Ç¤¹¡£


// °ú¿ô¤¬¤Ê¤¯¡¢Ìá¤êÃͤ¬void¤Î¥á¥½¥Ã¥É¤òɽ¤¹¥Ç¥ê¥²¡¼¥È
Action showMessage;

// int·¿¤Î°ú¿ô¤ò1¤Ä¤È¤ê¡¢Ìá¤êÃͤ¬void¤Î¥á¥½¥Ã¥É¤òɽ¤¹¥Ç¥ê¥²¡¼¥È
Action<int> displayNumber;

void ShowMessage()
{
    Debug.Log("Hello, World!");
}

void DisplayNumber(int number)
{
    Debug.Log($"ɽ¼¨¤¹¤ë¿ôÃÍ: {number}");
}

void Start()
{
    showMessage = ShowMessage;
    displayNumber = DisplayNumber;

    showMessage();
    displayNumber(42);
}


Predicate ¥Ç¥ê¥²¡¼¥È


¡¡Predicate<T>: T·¿¤Î°ú¿ô¤ò1¤Ä¤È¤ê¡¢bool·¿¤ÎÌá¤êÃͤòÊÖ¤¹¥Ç¥ê¥²¡¼¥È¤Ç¤¹¡£½Ò¸ì¤È¤·¤Æ»È¤ï¤ì¤Þ¤¹¡£



Predicate ·¿¤È¤Ï¡©


¡¡¡ÖPredicate¡×¤È¤Ï¡¢°ìÈÌŪ¤Ë½Ò¸ì¤È¸Æ¤Ð¤ì¤ë¤â¤Î¤Ç¡¢¥×¥í¥°¥é¥ß¥ó¥°¤Ë¤ª¤¤¤Æ¤Ï¡¢¤¢¤ë¾ò·ï¤òËþ¤¿¤¹¤«¤É¤¦¤«¤òȽÃǤ¹¤ë´Ø¿ô¤ä¥á¥½¥Ã¥É¤ò»Ø¤·¤Þ¤¹¡£
¤è¤Ã¤Æ½Ò¸ì¤Ï¡¢ÏÀÍýÃÍ¡Ê¿¿µ¶ÃÍ¡¢¤Ä¤Þ¤êtrue¤Þ¤¿¤Ïfalse¡Ë¤òÊÖ¤¹¤³¤È¤¬ÆÃħ¤Ç¤¹¡£

¡¡C#¤Ç¤Ï¡¢Predicate<T>·¿¤Î¥Ç¥ê¥²¡¼¥È¤¬½Ò¸ì¤ÎÌò³ä¤ò²Ì¤¿¤·¤Þ¤¹¡£

¡¡¤³¤Î¥Ç¥ê¥²¡¼¥È¤Ï¡¢»ØÄꤵ¤ì¤¿·¿T¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤Ë¼è¤ê¡¢¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤¬ÆÃÄê¤Î¾ò·ï¤Ë°ìÃפ¹¤ë¤«¤É¤¦¤«¤òȽÃǤ¹¤ë¤¿¤á¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£
Predicate<T>·¿¤Î¥Ç¥ê¥²¡¼¥È¤Ï¡¢bool·¿¤ÎÌá¤êÃͤò»ý¤Á¤Þ¤¹¡£¤³¤ì¤Ï¡¢½Ò¸ì¤¬¤¢¤ë¾ò·ï¤òËþ¤¿¤¹¤«¤É¤¦¤«¤òȽÃǤ¹¤ëÌò³ä¤ò²Ì¤¿¤¹¤¿¤á¡¢true¤Þ¤¿¤Ïfalse¤òÊÖ¤¹É¬Íפ¬¤¢¤ë¤«¤é¤Ç¤¹¡£

¡¡¤½¤Î¤¿¤á Predicate<T>·¿¤Î¥Ç¥ê¥²¡¼¥È(½Ò¸ì)¤È¤Ï¡¢ bool ·¿¤ÎÌá¤êÃͤò»ý¤Ä¥Ç¥ê¥²¡¼¥È¤Î¥Æ¥ó¥×¥ì¡¼¥È¤È¤·¤Æ¹Í¤¨¤Æ¤âÌäÂꤢ¤ê¤Þ¤»¤ó¡£



¡¡Predicate<T>¥Ç¥ê¥²¡¼¥È¤ÎÄêµÁ¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£


public delegate bool Predicate<in T>(T obj);

¡¡Predicate<T>·¿¤Î¥Ç¥ê¥²¡¼¥È¤Ï¡¢¼ç¤Ë¥³¥ì¥¯¥·¥ç¥ó¤ä¥ê¥¹¥È¤ËÂФ·¤Æ¥Õ¥£¥ë¥¿¥ê¥ó¥°½èÍý¤ò¹Ô¤¦ºÝ¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£
Î㤨¤Ð¡¢List<T>¥¯¥é¥¹¤ÎFindAll¥á¥½¥Ã¥É¤Ç¤Ï¡¢Predicate<T>·¿¤Î¥Ç¥ê¥²¡¼¥È¤ò°ú¿ô¤Ë¼è¤ê¡¢¾ò·ï¤Ë°ìÃפ¹¤ëÍ×ÁǤÀ¤±¤òÃê½Ð¤·¤¿¿·¤·¤¤¥ê¥¹¥È¤òÀ¸À®¤·¤Þ¤¹¡£



¡¡°Ê²¼¤ÎÎã¤Ç¤Ï¡¢List<int>¤«¤é¶ö¿ô¤ÎÍ×ÁǤÀ¤±¤òÃê½Ð¤·¤Æ¤¤¤Þ¤¹¡£


List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

Predicate<int> isEven = n => n % 2 == 0;

List<int> evenNumbers = numbers.FindAll(isEven);

¡¡¤³¤Î¾ì¹ç¡¢isEven ¤Î Predicate ¤Ï¥é¥à¥À¼°¤Çµ­½Ò¤µ¤ì¤Æ¤ª¤ê¡¢int·¿¤Î°ú¿ô n ¤ò¼õ¤±¼è¤ê¡¢¤½¤ÎÃͤ¬¶ö¿ô¤Ç¤¢¤ì¤Ðtrue¡¢´ñ¿ô¤Ç¤¢¤ì¤Ðfalse¤òÊÖ¤·¤Þ¤¹¡£
¤½¤Î¸å¡¢FindAll¥á¥½¥Ã¥É¤Î°ú¿ô¤È¤·¤ÆÅϤµ¤ì¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢numbers¥ê¥¹¥È¤«¤é¶ö¿ô¤ÎÍ×ÁǤÀ¤±¤¬Ãê½Ð¤µ¤ì¤¿¿·¤·¤¤¥ê¥¹¥ÈevenNumbers¤¬À¸À®¤µ¤ì¤Þ¤¹¡£



¡¡¤³¤ì¤é¤Î¥Ç¥ê¥²¡¼¥È¤Ï¡¢ÍÍ¡¹¤Ê¥·¥Ê¥ê¥ª¤Ç»ÈÍѤµ¤ì¤Þ¤¹¡£
Î㤨¤Ð¡¢LINQ¥¯¥¨¥ê¡¢¥¤¥Ù¥ó¥È¥Ï¥ó¥É¥é¡¢ÈóƱ´ü½èÍý¡¢¥Ç¡¼¥¿¸¡¾Ú¤Ê¤É¤Ç³èÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£

¡¡¤Þ¤¿¡¢Æȼ«¤Î¥Ç¥ê¥²¡¼¥È(¥«¥¹¥¿¥à¡¦¥Ç¥ê¥²¡¼¥È)¤òºîÀ®¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£


UnityAction ¤È UnityEvent


¡¡Unity¤Ç¤ÏUnityAction¤È¤¤¤¦Action¤Ë»÷¤¿¥Ç¥ê¥²¡¼¥È¤¬Ä󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£
UnityAction¤Ï¡¢Æä˰ú¿ô¤Ê¤·¤Î¥¤¥Ù¥ó¥È¥Ï¥ó¥É¥é¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£
Ìá¤êÃͤ¬void¤Ç¤¢¤ë¤¿¤á¡¢¥¤¥Ù¥ó¥È¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥³¡¼¥ë¥Ð¥Ã¥¯¥á¥½¥Ã¥É¤¬²¿¤âÊÖ¤µ¤Ê¤¤¤³¤È¤¬Êݾڤµ¤ì¤Þ¤¹¡£



¡¡°ìÊý¤Ç¡¢UnityEvent¤Ï¥Ç¥ê¥²¡¼¥È¤Ç¤Ï¤Ê¤¯¡¢¥¤¥Ù¥ó¥È¤ò¥«¥×¥»¥ë²½¤¹¤ë¥¯¥é¥¹¤Ç¤¹¡£
UnityEvent¤Ï¡¢System̾Á°¶õ´Ö¤ÎEvent¥¯¥é¥¹¤È¤Ï°Û¤Ê¤ê¡¢UnityEngine.Events̾Á°¶õ´Ö¤Ë°¤·¤Þ¤¹¡£

¡¡UnityEvent¤Ï¡¢UnityAction¥Ç¥ê¥²¡¼¥È¤ò¥¤¥Ù¥ó¥È¥Ï¥ó¥É¥é¤È¤·¤Æ»ÈÍѤ·¡¢¥¤¥Ù¥ó¥È¤¬È¯À¸¤·¤¿¤È¤­¤Ë¡¢ÅÐÏ¿¤µ¤ì¤¿UnityAction¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

¡¡UnityEvent¤Ï¡¢Æȼ«¤Î¥¤¥Ù¥ó¥È¤òÄêµÁ¤·¡¢Unity¤Î¥¤¥ó¥¹¥Ú¥¯¥¿¾å¡¼¤Ç´Êñ¤Ë¥¤¥Ù¥ó¥È¥Ï¥ó¥É¥é(¥á¥½¥Ã¥É)¤ò³ä¤êÅö¤Æ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
¤Þ¤¿¡¢UnityEvent¤Ï¡¢¥Ñ¥é¥á¡¼¥¿ÉÕ¤­¤ÎUnityEvent<T>¤äUnityEvent<T0, T1>¤Ê¤É¡¢Ê£¿ô¤Î°ú¿ô¤ò¥µ¥Ý¡¼¥È¤¹¤ë¥Ð¥ê¥¨¡¼¥·¥ç¥ó¤âÄ󶡤·¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤é¤Î¥Ð¥ê¥¨¡¼¥·¥ç¥ó¤Ï¡¢¤½¤ì¤¾¤ìÂбþ¤¹¤ëUnityAction<T>¤äUnityAction<T0, T1>¥Ç¥ê¥²¡¼¥È¤ò¥¤¥Ù¥ó¥È¥Ï¥ó¥É¥é¤È¤·¤Æ»ÈÍѤ·¤Þ¤¹¡£


¡¡
¡¡°Ê¾å¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¼¡¤Ï¡¡¥Ç¥ê¥²¡¼¥È¤È¥é¥à¥À¼°¤Î´Ø·¸¡¡¤Ç¤¹¡£

¥³¥á¥ó¥È¤ò¤«¤¯


¡Öhttp://¡×¤ò´Þ¤àÅê¹Æ¤Ï¶Ø»ß¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ÍøÍѵ¬Ìó¤ò¤´³Îǧ¤Î¤¦¤¨¤´µ­Æþ²¼¤µ¤¤

Menu



´ðÁÃ

µ»½Ñ/Ãμ±(¼ÂÁõÎã)

3D¥¢¥¯¥·¥ç¥ó¥²¡¼¥à

2D¤ª¤Ï¤¸¤­¥²¡¼¥à(ȯŸÊÔ)

2D¶¯À©²£¥¹¥¯¥í¡¼¥ë¥¢¥¯¥·¥ç¥ó(ȯŸÊÔ)

2D¥¿¥Ã¥×¥·¥å¡¼¥Æ¥£¥ó¥°(³ÈÄ¥ÊÔ)

¥ì¡¼¥¹¥²¡¼¥à(È´¿è)

2DÊüÃÖ¥²¡¼¥à(ȯŸÊÔ)

3D¥ì¡¼¥ë¥¬¥ó¥·¥å¡¼¥Æ¥£¥ó¥°(±þÍÑÊÔ)

3Dæ½Ð¥²¡¼¥à(È´¿è)

2D¥ê¥¢¥ë¥¿¥¤¥à¥¹¥È¥é¥Æ¥¸¡¼

3D¥¿¥Ã¥×¥¢¥¯¥·¥ç¥ó(NavMeshAgent »ÈÍÑ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥«¥¨¥ë¤Î°Ù¤Ë¡Á¡¢¥Ü¥³¥¹¥«¥¦¥©¡¼¥ºÉ÷)

VideoPlayer ¥¤¥Ù¥ó¥ÈϢư¤Î¼ÂÁõÎã

VideoPlayer ¥ê¥¹¥ÈÆ⤫¤é¥à¡¼¥Ó¡¼ºÆÀ¸¤Î¼ÂÁõÎã(ȯŸ)

AR ²èÁüÉÕ¤­¥ª¥Ö¥¸¥§¥¯¥ÈÀ¸À®¤Î¼ÂÁõÎã

AR ¥ê¥¹¥ÈÆ⤫¤éÀ¸À®¤Î¼ÂÁõÎã(ȯŸ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥µ¥Ð¥¤¥Ð¡¼É÷)

private



¤³¤Î¥µ¥¤¥ÈÆâ¤ÎºîÉʤϥæ¥Ë¥Æ¥£¤Á¤ã¤ó¥é¥¤¥»¥ó¥¹¾ò¹à¤Î¸µ¤ËÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£

´ÉÍý¿Í/Éû´ÉÍý¿Í¤Î¤ßÊÔ½¸¤Ç¤­¤Þ¤¹