ºÇ½ª¹¹¿·¡§
orika_ex_miyako 2022ǯ10·î19Æü(¿å) 16:41:50ÍúÎò
¡¡ref ¥¡¼¥ï¡¼¥É¤Ï¡¢ÊÑ¿ô¤ò»²¾È¤·¤ÆÍøÍѤǤ¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Îµ¡Ç½¤Ç¤¹¡£
MicroSoft
ref (C# ¥ê¥Õ¥¡¥ì¥ó¥¹)
++C++; // ̤³ÎǧÈô¹Ô C ÍÍ
»²¾ÈÅϤ·
¡¡ref ¥¡¼¥ï¡¼¥É¼«ÂΤˤÏÊ£¿ô(¸½ºß 5 ¼ïÎà)¤ÎÍøÍÑÊýË¡¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢¤³¤³¤Ç¤Ï¡Ú»²¾ÈÌá¤êÃۤ͡ȡÚref ¥í¡¼¥«¥ëÊÑ¿ô¡Û¤Ë¤Ä¤¤¤Æ¤ÎÀâÌÀ¤È¼ÂÁõÎã¤òÄ󼨤·¤Þ¤¹¡£
¡¡¥á¥½¥Ã¥É¤ÎÌá¤êÃͤη¿¤ÎÁ°¤Ë ref ¥¡¼¥ï¡¼¥É¤òÍøÍѤ¹¤ë¤³¤È¤Ç¡¢Ìá¤êÃͤÎÃͤËÂФ·¤Æ»²¾ÈÅϤ·¤ò¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡ã»²¾ÈÌá¤êÃͤΤ¢¤ë¥á¥½¥Ã¥É¡ä
private ref int SampleMethodRef(string name) { }
¡¡ÍøÍѤ¹¤ë¾ì¹ç¤Ë¤Ï¡¢Ìá¤êÃͤη¿¤ÎÁ°¡¢ÃͤòÅϤ¹Â¦¡¢Ãͤò¼õ¤±¤ë¦¤Ë¡¢¤½¤ì¤¾¤ì ref ½¤¾þ»Ò¤òµ½Ò¤·¤Þ¤¹¡£
¡¡¥í¡¼¥«¥ëÊÑ¿ô¤Ë¤Ä¤¤¤Æ¤â ref ¥¡¼¥ï¡¼¥É¤òÍøÍѤ¹¤ë¤³¤È¤Ç¡¢ÂåÆþ¤¹¤ëÊÑ¿ô¤ÎÃͤò»²¾ÈÅϤ·¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡¤½¤Î¾ì¹ç¡¢»²¾È¤È¤·¤Æ°ú¿ô¤òÅϤ¹Â¦¡¢¤½¤·¤Æ»²¾È¤ò¼õ¤±¼è¤ë¦¤Îξ¦¤Ë ref ¥¡¼¥ï¡¼¥É¤¬É¬Íפˤʤê¤Þ¤¹¡£
¡ã»²¾ÈÌá¤êÃͤΤ¢¤ë¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ ref ¥í¡¼¥«¥ëÊÑ¿ô¤Ë»²¾ÈÃͤò¼õ¤±¼è¤ë¡ä
ref int count = ref SampleMethodRef("itemName");
»²¹Í¥µ¥¤¥È
++C++; // ̤³ÎǧÈô¹Ô C ÍÍ
»²¾ÈÌá¤êÃͤȻ²¾È¥í¡¼¥«¥ëÊÑ¿ô
¡¡¾åµ¤ÎÀâÌÀ¤ò¸µ¤Ë¡¢¼ÂºÝ¤ËÍøÍѤ¹¤ëÎã¤òµºÜ¤·¤Þ¤¹¡£
¤Ê¤ª¡¢Èæ³Ó¤Ç¤¤ë¤è¤¦¤Ë¡¢»²¾ÈÌá¤êÃͤòÍøÍѤ¹¤ë¥±¡¼¥¹¤ÈÍøÍѤ·¤Ê¤¤¥±¡¼¥¹¤òÄ󼨤·¤Æ¤¤¤Þ¤¹¡£
¡¡Ê£¿ô¤Î¼ïÎà¤Î¥¢¥¤¥Æ¥à¤¬¡¢¤½¤ì¤¾¤ìÊ̤νê»ý¿ô¤È¤·¤Æ´ÉÍý¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¡¢»ØÄꤷ¤¿¥¢¥¤¥Æ¥à¤Î½ê»ý¿ô¤ÎÃͤò¹¹¿·¤¹¤ë½èÍý¤ËÍøÍѤ·¤¿¥±¡¼¥¹¤Ç¤¹¡£
¡¡Ä̾ï¤Î½èÍý¤Î¾ì¹ç¡¢¥¢¥¤¥Æ¥à¤Î¼ïÎऴ¤È¤Ë¥á¥½¥Ã¥É¤òÍÑ°Õ¤·¤Æ¡¢¤½¤ÎÃæ¤Ç½ê»ý¿ô¤Î¹¹¿·¤ò¹Ô¤¦¤³¤È¤¬Â¿¤¤¤Ç¤¹¤¬¡¢
»²¾ÈÌá¤êÃͤòÍøÍѤ¹¤ë¤³¤È¤Ç¡¢£±¤Ä¤ÎÊÑ¿ô¤Ë¡¢¤½¤Î¤È¤¤Ë¹¹¿·¤¬É¬Íפʥ¢¥¤¥Æ¥à¤Î½ê»ý¿ô¤ò»²¾È¤·¤Æ¼èÆÀ¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢
Ê£¿ô¤Î¥á¥½¥Ã¥É¤òÍÑ°Õ¤¹¤ë¤³¤È¤Ê¤¯¡¢¤Þ¤¿¡¢ÄÉ²Ã¤Î¥×¥í¥°¥é¥à¤ÎɬÍפʤ¯¡¢¥×¥í¥°¥é¥àÆâ¤Î½ê»ý¿ô¤Î¹¹¿·Éôʬ¤ò°ì¸µ²½¤¹¤ë¤³¤È¤¬½ÐÍè¤Æ¤¤¤Þ¤¹¡£
ItemName .cs
¡¡»²¾ÈÌá¤êÃͤȻ²¾È¥í¡¼¥«¥ëÊÑ¿ô¤òÍøÍѤ¹¤ë¤³¤È¤Ç¡¢ÍøÍѤ·¤Ê¤¤¾ì¹ç¤Ë¤Ï£±¤Ä¤Î¥á¥½¥Ã¥ÉÆâ¤Ç¼ÂÁõ¤·¤Æ¤¤¤¿½èÍý¤ò£²¤Ä¤Î¥á¥½¥Ã¥É¤òʬ¤±¤ÆºîÀ®¤·¤Æ¤¤¤Þ¤¹¡£
¡¡»²¾È¤·¤Æ¤¤¤ëÃͤι¹¿·¤ò¹Ô¤¦ UpdateRecoveryItemCount ¥á¥½¥Ã¥É¤È¡¢¤É¤ÎÃͤò»²¾È¤¹¤ë¤«¤ò·èÄꤹ¤ë GetRecoveryItemCountRef ¥á¥½¥Ã¥É¤Ëʬ¤±¤Æ¤¤¤ë¤Î¤Ç¡¢
½¤Àµ¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢GetRecoveryItemCountRef ¥á¥½¥Ã¥É¤Î¤ß½¤Àµ¤¹¤ë·Á¼°¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡º£²ó¤Î¾ì¹ç¡¢»²¾ÈÌá¤êÃͤε¡Ç½¤òÍøÍѤ¹¤ë¤³¤È¤Ë¤è¤ê¡¢Ìá¤êÃͤÎÃͤò¥á¥ó¥ÐÊÑ¿ô¤Î»²¾ÈÃͤȤ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¤Î¤Ç¡¢
¤½¤ÎÃͤòÁý¸º¤·¤¿¾ì¹ç¤Ë¤Ï¡¢¥á¥ó¥ÐÊÑ¿ô¤ÎÃͤ½¤Î¤â¤Î¤¬Êѹ¹¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
PlayerHealth.cs
¡¡¤³¤Á¤é¤Î¥±¡¼¥¹¤Î¾ì¹ç¡¢UpdateRecoveryItemCount ¥á¥½¥Ã¥ÉÆâ¤Ç»²¾È¤·¤¿Ãͤι¹¿·¤ò¹Ô¤¦µ¡Ç½¤¬È÷¤ï¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢
º£¸å¡¢¥¢¥¤¥Æ¥à¤Î¼ïÎबÁý¸º¤·¤Æ¤â¡¢¤³¤Î¥á¥½¥Ã¥ÉÆâ¤Ø¤Î½¤Àµ¤ÏɬÍפ¢¤ê¤Þ¤»¤ó¡£
¡¡Âå¤ï¤ê¤Ë¡¢GetRecoveryItemCountRef ¥á¥½¥Ã¥ÉÆâ¤Î switch ʸ¤Îʬ´ô¤Î¤ß½¤Àµ¤¹¤ì¤ÐºÑ¤ß¤Þ¤¹¡£
¡¡private int x = 0; ¤ÎÀë¸À¤Ï¡¢GetRecoveryItemCountRef ¥á¥½¥Ã¥ÉÆâ¤Î switch ʸ¤Î default ¤ÇÍøÍѤ¹¤ë¤¿¤á¤ËÀë¸À¤·¤Æ¤¤¤Þ¤¹¡£
Íýͳ¤Ï¡¢»²¾ÈÌá¤êÃͤȤ·¤Æ»ØÄê¤Ç¤¤ëÊÑ¿ô¤Ë¤Ï¥í¡¼¥«¥ëÊÑ¿ô¤ÏÍøÍѤǤ¤Ê¤¤¤È¤¤¤¦¥ë¡¼¥ë¤¬¤¢¤ë¤¿¤á¤Ç¤¹¡£
Î㤨¤Ð¡¢GetRecoveryItemCountRef ¥á¥½¥Ã¥ÉÆâ¤Ç int x = 0; ¤òÀë¸À¤·¤¿¾ì¹ç¡¢x ¤Ï¾åµ¤Î¥ë¡¼¥ë¤Ë¤è¤ê¡¢»ØÄꤹ¤ë¤È¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¤Ê¤ªÌá¤êÃͤΤ¢¤ë switch ʸ¤Î¾ì¹ç¤Ë¤Ï¼°¤Ç¤Î½ñ¼°¤Î switch ʸ¤¬ÍøÍѤǤ¤Þ¤¹¤¬¡¢»²¾ÈÌá¤êÃͤξì¹ç¤Ë¤Ï¡¢¼°¤Ç¤Î½ñ¼°¤ÏÍøÍѤǤ¤Þ¤»¤ó¡£
(Ä̾ï¤Î switch ʸ¤Çµ½Ò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹)
¡¡»²¾ÈÍøÍѤ·¤Æ¤¤¤ë¥Ý¥¤¥ó¥È¤Ï¡¢°Ê²¼¤ÎÉôʬ¤Ë¸ú²ÌŪ¤ËÍøÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£
UpdateRecoveryItemCount ¥á¥½¥Ã¥ÉÆâ
// ²óÉü¥¢¥¤¥Æ¥à¤Î½ê»ý¿ô¤ò¡¢ºÇÂçÃͤȺǾ®Ãͤ˼ý¤Þ¤ë¤è¤¦¤ËÀ©¸Â¤·¤Æ¹¹¿·¤¹¤ë recoveryItemCount = Mathf.Clamp(recoveryItemCount + updateValue, 0, maxCount);¡¡¡¡//¡¡¡ù¡¡»²¾ÈÃͤò¹¹¿·¤¹¤ë¤Î¤Ç¡¢¥á¥ó¥ÐÊÑ¿ô¼«ÂΤ¬ÊѤï¤ë
¡¡¤³¤Î recoveryItemCount ¤ÎÃͤ¬¡¢¤½¤ÎÁ°¤Î½èÍý¤Ç»²¾È¤·¤Æ¼èÆÀ¤·¤¿¡¢¤¤¤º¤ì¤«¤Î¥á¥ó¥ÐÊÑ¿ô¤ÎÃͤˤʤäƤ¤¤Þ¤¹¡£
¥á¥ó¥ÐÊÑ¿ô¤ÎÃͤΥ³¥Ô¡¼ÃͤǤϤʤ¤¤Î¤Ç¡¢¤³¤ÎÃͤòÊѹ¹¤¹¤ë¤È¡¢¥á¥ó¥ÐÊÑ¿ô¤ÎÃͤ¬»²¾È¤µ¤ì¤ÆÊѲ½¤·¤Þ¤¹¡£
¡¡¤½¤Î¤¿¤á¡¢¥¢¥¤¥Æ¥à¤Î½ê»ý¿ô¤ò¹¹¿·¤¹¤ë½èÍý¤Ï¤³¤Î£±¤Ä¤À¤±¤Ç¤¹¤¬¡¢¹¹¿·¤ò¹Ô¤¦Ãͤ¬¤½¤ÎÅÔÅÙ¡¢»²¾ÈÀè¤òÊѤ¨¤ë¤è¤¦¤Ê¥í¥¸¥Ã¥¯¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Î¤Ç
¤¤¤º¤ì¤Î¥á¥ó¥ÐÊÑ¿ô¤ÎÃͤǤ¢¤Ã¤Æ¤âÂбþ½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡¾åµ¤Î»²¾ÈÌá¤êÃͤȻ²¾È¥í¡¼¥«¥ëÊÑ¿ô¤òÍøÍѤ·¤¿¾ì¹ç¤Î¥Ç¥Ð¥Ã¥°ÍѤΥ½¡¼¥¹¥³¡¼¥É¤ò·ÇºÜ¤·¤Æ¤ª¤¤Þ¤¹¡£
ºîÀ®¤·¤¿¤é¡¢Ç¤°Õ¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤·¤Æ¥²¡¼¥à¤ò¼Â¹Ô¤·¤Æ¥Ç¥Ð¥Ã¥°¤ò¹Ô¤¤¤Þ¤¹¡£
¡¡Start ¥á¥½¥Ã¥ÉÆâ¤Ç¼Â¹Ô¤¹¤ë UpdateRecoveryItemCount ¥á¥½¥Ã¥É¤Î»ØÄê¤òÊѤ¨¤Æ¡¢½èÍý¤ÎÆâÍƤò³Îǧ¤ò¤·¤Þ¤¹¡£
¤³¤Î¥½¡¼¥¹¥³¡¼¥É¤Ç¤Ï¸º»»¤Î¤ß¤·¤Æ¤¤¤Þ¤¹¤¬¡¢ÅöÁ³²Ã»»¤â½ÐÍè¤Þ¤¹¤Î¤Ç¡¢¼«Ê¬¤Ç½èÍý¤ò½ñ¤´¹¤¨¤Æ³Îǧ¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¡¡¤³¤Î¥Ç¥Ð¥Ã¥°¤Ë¤ª¤¤¤ÆÂçÀڤʤΤϡ¢»²¾È¥í¡¼¥«¥ëÊÑ¿ô¤Ë¤Ä¤¤¤Æ¤Ï¡¢»²¾ÈÌá¤êÃͤȤ·¤Æ¥á¥ó¥ÐÊÑ¿ô¤¬»²¾È¤µ¤ì¤Æ¤¤¤ë¤«¤ò³Îǧ¤·¤Þ¤¹¡£
¤½¤·¤Æ»²¾È¥í¡¼¥«¥ëÊÑ¿ô¤ò¹¹¿·¤¹¤ë¤³¤È¤Ç¡¢»²¾È¤µ¤ì¤Æ¤¤¤ë¥á¥ó¥ÐÊÑ¿ô¤ÎÃͤ¬Àµ¾ï¤Ë¹¹¿·¤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò³Îǧ¤¹¤ë¤³¤È¤Ç¤¹¡£
¡¡¥Ç¥Ð¥Ã¥°¤¹¤ë°ÕÌ£¤È¥Ç¥Ð¥Ã¥°¤ÎÆâÍƤòÍý²ò¤·¤¿¾å¤Ç³Îǧ¤ò¹Ô¤¦¤³¤È¤¬ÂçÀڤˤʤê¤Þ¤¹¡£
PlayerHealth.cs
¡¡½ÐÎÏ·ë²Ì¤Ç¤¹¡£
Console ¥Ó¥å¡¼
![](https://image02.seesaawiki.jp/i/o/i-school-memo/1mdPmNvejD.png)
¡¡¥¤¥ó¥¹¥Ú¥¯¥¿¡¼Æâ¤â¡¢Debug ¥â¡¼¥É¤ËÀÚ¤êÂؤ¨¤ë¤³¤È¤Ç¡¢¥á¥ó¥ÐÊÑ¿ô¤¬»²¾È¤µ¤ì¤ÆÃͤ¬ÊѲ½¤·¤Æ¤¤¤ë¤³¤È¤ò³Îǧ¤Ç¤¤Þ¤¹¡£
¥¤¥ó¥¹¥Ú¥¯¥¿¡¼(Debug ¥â¡¼¥É)¡¡½é´üÃÍ
![](https://image01.seesaawiki.jp/i/o/i-school-memo/rfH6k9tjXo.png)
¡¡¡¡¡¡¡¡¡¡¢
¥¤¥ó¥¹¥Ú¥¯¥¿¡¼(Debug ¥â¡¼¥É)¡¡¥Ç¥Ð¥Ã¥°¼Â¹Ô»þ
![](https://image01.seesaawiki.jp/i/o/i-school-memo/o5I215iOj7.png)
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°
¥³¥á¥ó¥È¤ò¤«¤¯