ºÇ½ª¹¹¿·¡§ orika_ex_miyako 2023ǯ11·î15Æü(¿å) 21:15:51ÍúÎò
¡¡
¡¡Î㤨¤Ð HP ¤Ê¤É¤Î¥²¡¼¥¸¤ÎÊÑÆ°¤Ë¹ç¤ï¤»¤Æ¡¢Slider ¤Î¸½ºßÃͤ˥¨¥Õ¥§¥¯¥È¤òɽ¼¨¤µ¤»¤ëµ¡Ç½¤òºîÀ®¤·¤Þ¤¹¡£
¡¡Fill ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÈϢư¤·¤Æ°ÜÆ°¤¹¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È¤Ç¡¢Slider ¤Î¸½ºßÃͤ˥¨¥Õ¥§¥¯¥È¤òɽ¼¨¤Ç¤¤Þ¤¹¡£
¡¡¤Ê¤ªÄ̾ï¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ï Transform ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢
Canvas ¤ÇÍøÍѤ¹¤ë¤¿¤á¤Ë¤Ï UI ÍѤΠRectTransform ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤òÍøÍѤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¡¡¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤Î Add Component ¥Ü¥¿¥ó¤ò²¡¤·¤Æ¡¢RectTransform ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤òÄɲ乤뤳¤È¤Ç¡¢
Transform ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò RectTransform ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ËÀÚ¤êÂؤ¨¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
(¥×¥ì¥Ï¥Ö¤Î¾ì¹ç¤Ë¤Ï¡¢»öÁ°¤Ë Unpack ¤·¤Æ¤«¤éºî¶È¤·¤Æ¤¯¤À¤µ¤¤¡£)
¡¡Main ¥â¥¸¥å¡¼¥ëÆâ¤Î Looping ¤Î¥Á¥§¥Ã¥¯¤ò³°¤·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£(¥Ç¥Ð¥Ã¥°»þ¤Ë¤ÏÆþ¤ì¤Æ¤ª¤¯¤ÈÊØÍø¤Ç¤¹¤Î¤Ç¡¢¤³¤Î²èÁü¤Ç¤Ï¥Á¥§¥Ã¥¯¤òÆþ¤ì¤Æ¤¤¤Þ¤¹)
¡¡Main ¥â¥¸¥å¡¼¥ëÆâ¤Î PlayOnAwake ¤Î¥Á¥§¥Ã¥¯¤òÆþ¤ì¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£
¤³¤Î¥Á¥§¥Ã¥¯¤òÆþ¤ì¤Æ¤ª¤¯¤³¤È¤Ç¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬¥¢¥¯¥Æ¥£¥Ö¾õÂ֤ˤʤ뤿¤Ó¤Ë¥Ñ¡¼¥Æ¥£¥¯¥ë¥·¥¹¥Æ¥à¤¬ºÇ½é¤«¤éºÆÀ¸¤µ¤ì¤Þ¤¹¡£
¡¡Renderer ¥â¥¸¥å¡¼¥ëÆâ¤Î Order in Layer ¤ÎÃͤò 1 °Ê¾å¤ËÀßÄꤷ¤Æ²èÌÌɽ¼¨¤ÎÍ¥ÀèÅÙ¤ò¾å¤²¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£
¡¡ÀßÄê¤Ï°Ê¾å¤Ç¤¹¡£
ºÎÍѤ·¤Æ¤¤¤ë¥¨¥Õ¥§¥¯¥È¤Ë¤â¤è¤ê¤Þ¤¹¤¬¡¢¤½¤ì°Ê³°¤ÎÉôʬ¤Ï½é´üÀßÄê¤Î¤Þ¤Þ¤ÇÍøÍѤǤ¤Þ¤¹¡£
¡¡»È¤¤Êý¤È¤·¤Æ¤Ï¡¢Slider ¤Î¹¹¿·¤Ë¹ç¤ï¤»¤Æ¥¨¥Õ¥§¥¯¥È¤òɽ¼¨¤µ¤»¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È¤Ç¡¢Slider ¤Î¸½ºßÃͤ˥¨¥Õ¥§¥¯¥È¤òɽ¼¨¤Ç¤¤Þ¤¹¡£
¡¡¥¨¥Õ¥§¥¯¥È¤Ë¥Ñ¡¼¥Æ¥£¥¯¥ë¥·¥¹¥Æ¥à¤òÍøÍѤ·¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Îɽ¼¨/Èóɽ¼¨¤òÀÚ¤êÂؤ¨¤ë¤À¤±¤Ç¼«Æ°Åª¤Ë¥¨¥Õ¥§¥¯¥È¤¬ºÆÀ¸¤µ¤ì¤Þ¤¹¡£
¡¡°Ê²¼¤Ë¥µ¥ó¥×¥ë¥³¡¼¥É¤òÄ󼨤·¤Æ¤ª¤¤Þ¤¹¡£
²Ã¹©¤·¤ÆÍøÍѤ·¤Æ¤¯¤À¤µ¤¤¡£(ÈóƱ´ü½èÍý¤Ë¤Ï UniTask ¤òÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£)
using Cysharp.Threading.Tasks; using UnityEngine; public class ParticleController : MonoBehaviour { [SerializeField] private ParticleSystem particleSystem; ¡¡¡¡// ¥Æ¥¹¥ÈÍÑ async UniTaskVoid Start() { ¡¡¡¡¡¡¡¡// ¥¥ã¥ó¥»¥ë½èÍýÍѤΥȡ¼¥¯¥óÀ¸À® ¡¡¡¡¡¡¡¡var token = this.GetCancellationTokenOnDestroy(); ¡¡¡¡¡¡¡¡// ¥Ç¥Ð¥Ã¥°ÍÑ¡£¼ÂºÝ¤Ë¤Ï¥À¥á¡¼¥¸¤ò¼õ¤±¤¿¥¿¥¤¥ß¥ó¥°¡¢Slider ¤ò¹¹¿·¤·¤¿¥¿¥¤¥ß¥ó¥°¤Ê¤É¤Ç³°Éô¥¯¥é¥¹¤«¤é¼Â¹Ô¤¹¤ë // ¥È¡¼¥¯¥ó¤Ï°ú¿ô¤ÇÅϤ¹¡£¥á¥¤¥ó¤Î½èÍý¤òÄä»ß¤µ¤»¤ëɬÍפϤʤ¤¤¿¤á¡¢Forget ¤òÍøÍѤ¹¤ë await PlayAndHideParticle(token).Forget(); } // ¥Ñ¡¼¥Æ¥£¥¯¥ë¥·¥¹¥Æ¥à¤ÎºÆÍøÍÑ public async UniTask PlayAndHideParticle(CancellationToken token) { // ¥Ñ¡¼¥Æ¥£¥¯¥ë¥·¥¹¥Æ¥à¤Î¥¢¥¯¥Æ¥£¥Ö²½ particleSystem.gameObject.SetActive(true); // ¥Ñ¡¼¥Æ¥£¥¯¥ëºÆÀ¸(¥Ñ¡¼¥Æ¥£¥¯¥ë¥·¥¹¥Æ¥àÆâ¤Î PlayOnAwake ¤Ë¥Á¥§¥Ã¥¯¤òÆþ¤ì¤Æ¤ª¤±¤Ð¡¢¤³¤Î½èÍý¤ÏÉÔÍ×) //particleSystem.Play(); // ¥Ñ¡¼¥Æ¥£¥¯¥ëºÆÀ¸¤¬½ª¤ï¤ë¤Þ¤ÇÂÔµ¡(¥Ñ¡¼¥Æ¥£¥¯¥ë¥·¥¹¥Æ¥à¤Î Looping ¤Î¥Á¥§¥Ã¥¯¤ò³°¤·¤Æ¤ª¤±¤Ð¡¢¥Ñ¡¼¥Æ¥£¥¯¥ë¥·¥¹¥Æ¥à¤Î Duration ¤Î»þ´Ö¤À¤±ÂÔµ¡¤Ë¤Ê¤ë) // WithCancellation ¥á¥½¥Ã¥É¤ò¥Á¥§¡¼¥ó¤·¡¢token ¤òÅϤ¹¤³¤È¤Ç¥¥ã¥ó¥»¥ë½èÍý¤ËÂбþ¤Ç¤¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤ë await UniTask.WaitUntil(() => !particleSystem.isPlaying).WithCancellation(token); // ¥Ñ¡¼¥Æ¥£¥¯¥ë¥·¥¹¥Æ¥à¤ÎÈó¥¢¥¯¥Æ¥£¥Ö²½ particleSystem.gameObject.SetActive(false); } }
¡¡¥Ñ¡¼¥Æ¥£¥¯¥ë¥·¥¹¥Æ¥à¤Î Main ¥â¥¸¥å¡¼¥ë¤Î Looping ¤Ë¥Á¥§¥Ã¥¯¤¬Æþ¤Ã¤Æ¤¤¤ë¤È
await UniTask.WaitUntil(() => !particleSystem.isPlaying); ¤Î½èÍý¤¬½ªÎ»¤·¤Þ¤»¤ó¡£
¡¡É¬¤º Looping ¤Î¥Á¥§¥Ã¥¯¤ò³°¤·¡¢PlayOnAwake ¤Î¥Á¥§¥Ã¥¯¤òÆþ¤ì¤Æ¤«¤éÆ°ºî¸¡¾Ú¤·¤Æ¤¯¤À¤µ¤¤¡£
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°
¥³¥á¥ó¥È¤ò¤«¤¯