¡¡¥¿¥×¥ë(tuple)·¿¤Ï C# ¤Î»ý¤Äµ¡Ç½¤Î£±¤Ä¤Ç¤¹¡£
Ê£¿ô¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ç¡¼¥¿¤ò¤Ò¤È¤Þ¤È¤á¤Ë¤·¤Æ´ÉÍý¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¤Þ¤¿¡¢Ìá¤êÃͤȤ·¤ÆÍøÍѤ¹¤ë¾ì¹ç¤Ë¤Ï¡¢
Ê£¿ô¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ç¡¼¥¿¤òƱ¤¸¤è¤¦¤Ë¤Þ¤È¤á¤ÆÌᤷ¤Æ¤¯¤ì¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡¥¿¥×¥ë·¿¤ÎÀë¸À¤Î½ñ¼°¤ÏÊ£¿ô¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤½¤ì¤¾¤ì¾Ò²ð¤·¤Þ¤¹¡£º£²ó¤Ï¢¤Î½ñ¼°¤Ç¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£
¡ãµ½ÒÎã¡¡ä
(int, bool) damage = (0, false);
(Sprite, MoveTimeScale) nextTimeScaleValue;
¾åµ¤ÎÎã¤Î¾ì¹ç¡¢damage ÊÑ¿ô¤ä nextTimeScaleValue ÊÑ¿ô¤Ë¤Ï¡¢£²¤Ä¤Î·¿¤Î¾ðÊ󤬴ޤޤì¤Æ¤¤¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¤è¤êÃúÇ«¤Ë½ñ¤¯¾ì¹ç¤Ë¤Ï¡¢º£²ó¤Î¤è¤¦¤Ë¡¢Ä̾ï¤ÎÊÑ¿ô¤Î¤è¤¦¤Ë·¿¤ËÂФ·¤ÆÀë¸À¤â²Äǽ¤Ç¤¹¡£
½ÐÍè¤ë¤À¤±
¥¿¥×¥ëÆâ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿¤Ë¤âÊÑ¿ô¤ÎÀë¸À¤ò¤Ä¤±¤ÆÍøÍѤ¹¤ë¤³¤È¤ò¤ª¤¹¤¹¤á¤·¤Þ¤¹¡£
¡ãµ½ÒÎ㢡ä
(int value, bool isWeakness) = (0, false);
(Sprite nextSprite, MoveTimeScale nextMoveTimeScaleType);
¡ãµ½ÒÎ㣡ä
(int value, bool isWeakness) damage = (0, false);
(Sprite nextSprite, MoveTimeScale nextMoveTimeScaleType) nextTimeScaleValue;
¡¡¥¿¥×¥ë·¿¤Î¾ðÊó¤ò°·¤¦¾ì¹ç¡¢¥¿¥×¥ëÆâ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ
ÊÑ¿ô¤ÎÀë¸À¤ò¹Ô¤Ã¤Æ¤¤¤ë¤«¡¢¤¤¤Ê¤¤¤«¤Ë¤è¤Ã¤Æ¡¢»²¾È¤¹¤ë¾ì¹ç¤Îµ½Ò¤¬ÊѤï¤ê¤Þ¤¹ ¡£
¡¡µ½ÒÎ㡤Τ褦¤Ë¡¢¥¿¥×¥ëÆâ¤Ç·¿¤Î¤ß¤·¤«Àë¸À¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢¥¿¥×¥ëÆâ¤Î¾ðÊó¤Ï
Item1¡¢Item2 ¤È¤¤¤¦¤è¤¦¤Ë¼«Æ°Åª¤ËºÎÈÖ¤µ¤ì¤Þ¤¹¡£
¤½¤Î¾ì¹ç¤Ï¡¢¡Ö
¥¿¥×¥ë¤ÎÊÑ¿ô̾.¥¿¥×¥ëÆâ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀë¸À½ç¤ÎItem¤ÎÈÖ¹æ¡×¤Î½ñ¼°¤Çµ½Ò¤Ç¤¤Þ¤¹¡£
¡ãµ½ÒÎ㡤ξì¹ç¤Î»²¾ÈÎã¡ä
Hoge(damage.Item1); // int ·¿¤Î°ú¿ô¤ò»²¾È¤·¤ÆÅϤ·¤Æ¤¤¤Þ¤¹
Hpge(nextTimeScaleValue.Item2)
ÊÑ¿ô¤ÎÀë¸À¤ò¹Ô¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢Ä̾ï¤ÎÊÑ¿ô¤Î¤è¤¦¤Ë¡Ö
¥¿¥×¥ë¤ÎÊÑ¿ô̾.¥¿¥×¥ëÆâ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ÎÊÑ¿ô̾¡×¤Î½ñ¼°¤Çµ½Ò¤Ç¤¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢¥¿¥×¥ë¤ÎÊÑ¿ô̾¤«¤é¡¢Ãͤο䬤¬²Äǽ¤Ç¤¹¡£
¡ãµ½ÒÎ㢤ξì¹ç¤Î»²¾ÈÎã¡ä
Hoge(damage.value); // int ·¿¤Î°ú¿ô¤ò»²¾È¤·¤ÆÅϤ·¤Æ¤¤¤Þ¤¹
Hoge(nextTimeScaleValue.nextSprite); // Sprite ·¿¤Î°ú¿ô¤ò»²¾È¤·¤ÆÅϤ·¤Æ¤¤¤Þ¤¹
Item1¡¢Item2 ¤Ç¤â½èÍý¤ÏÆ°¤¤Þ¤¹¤¬¡¢¥×¥í¥°¥é¥à¤Ï½èÍý¤ò¸«¤Æ¡¢
ï¤Ç¤â¤¹¤°¤ËÆâÍƤ¬Íý²ò¤Ç¤¤ëÀ߷פ¬ÍýÁۤǤ¹¡£
¤Ê¤ë¤Ù¤¯ÊÑ¿ô̾¤ò¤Ä¤±¤Æ¥¿¥×¥ë¤ÎÀë¸À¤ò¤·¤¿Êý¤¬¤¤¤¤¤È¤¤¤¦¤Î¤Ï¡¢¤³¤Î¤è¤¦¤Ë
¥×¥í¥°¥é¥à¤Î²ÄÆÉÀ¤Ë´Ø¤ï¤ë¤¿¤á¤Ç¤¹¡£
damage.Item1 ¤è¤ê¤â¡¢damage.value ¤ÎÊý¤¬¡¢ÊÑ¿ô̾¤À¤±¸«¤Æ¤â
¤É¤Î¤è¤¦¤ÊÃͤ¬ÂåÆþ¤µ¤ì¤Æ¤¤¤ë¤«È½ÃǤ¬¤Ä¤¤ä¤¹¤¤¤Î¤Ç¡¢½èÍý¤òÆɤ߲ò¤¤ä¤¹¤¤¤È¤¤¤¦¤³¤È¤Ç¤¹¡£
¡¡º£²ó¤Î¼ÂÁõ¤Ç¤Ï¡¢¥á¥½¥Ã¥É¤ÎÌá¤êÃͤȤ·¤Æ¥¿¥×¥ë·¿¤òÍøÍѤ·¡¢£²¤Ä¤Î·¿¤Î¾ðÊó¤òÌ᤹½èÍý¤ò¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤ÎÃͤò¼õ¤±¼è¤ë¦¤Ç¤Ï¡¢Æ±¤¸ÆâÍƤΥ¿¥×¥ë·¿¤ò½àÈ÷¤·¤Æ¤ª¤¯¤³¤È¤Ë¤è¤ê¡¢Ìá¤êÃͤξðÊó¤ò£²¤Ä¤Þ¤È¤á¤Æ¼õ¤±¼è¤ì¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
UIManager.cs
/// <summary>
/// ʬ´ô¾ðÊó¤Î¼èÆÀ
/// </summary>
/// <returns></returns>
public (bool, BranchDirectionType) GetSubmitBranch() {
return (isSubmitBranch, chooseBranchDirectionType);
}
GameManager.cs
¡ãÌá¤êÃͤΤ¢¤ë¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¦¡ä
// ʬ´ô¤òÁªÂò¤¹¤ë¤Þ¤ÇÂÔµ¡(while ¤Ç¤âOK)
yield return new WaitUntil(() => uiManager.GetSubmitBranch().Item1 == true);
// ÁªÂò¤·¤¿Ê¬´ô¤Î¥ë¡¼¥È¤òÀßÄê
originRailPathData = DataBaseManager.instance.GetRailPathDatasFromBranchNo(nextStagePathDataNo, uiManager.GetSubmitBranch().Item2);
¡¡£²¤Ä¤ÎÌ¿Îáʸ¤Ç uiManager.GetSubmitBranch() ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¡¢¤½¤ì¤¾¤ì°Û¤Ê¤ë·¿¤Î¾ðÊó¤ò¥¿¥×¥ë·¿¤ÎÌá¤ê¤ÎÃ椫¤é¼èÆÀ¤·¤Æ¤¤¤Þ¤¹¡£
Item1 ¤ÎÊý¤Ï bool ·¿¡¢Item2 ¤ÎÊý¤Ï BranchDirectionType ·¿¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¤³¤Î½èÍý¤ÎÃæ¤ÇÅо줹¤ë WaitUntil ¥¯¥é¥¹¤Ï°ÊÁ°¤Î¼ê½ç¤Ç³Ø½¬ºÑ¤Ç¤¹¡£(¼ê½ç£±£·¤Ë¼ÂÁõ¤È²òÀ⤬¤¢¤ê¤Þ¤¹¡£)
½èÍý¤ò¤·¤Ã¤«¤ê¤ÈÆɤ߲ò¤±¤ë¤è¤¦¤Ë¡¢¤³¤Îµ¡²ñ¤ËÉü½¬¤·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£
¡¡¤Ê¤ª¡¢¥¿¥×¥ë¤âÆþ¤ì»Ò¤òºî¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£Ä̾ï¤Ç¤¢¤ì¤Ð£²¤Ä¤Î·¿¤Ç¤¹¤¬¡¢¤³¤Îµ¡Ç½¤ò»È¤¨¤ÐÊ£¿ô¤Î¾ðÊó¤ò»ý¤¿¤»¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡ãÆþ¤ì»Ò¤Ë¤Ê¤Ã¤Æ¤¤¤ë¥¿¥×¥ë¡ä
(int x, (string a, int b) y) tuple = (0, ("String", 100));
»²¹Í¥µ¥¤¥È
MicroSoft C#¥ê¥Õ¥¡¥ì¥ó¥¹
¥¿¥×¥ë·¿
https://docs.microsoft.com/ja-jp/dotnet/csharp/lan...