¡¡¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤ÎÌá¤êÃͤη¿¤Ï IEnumerator ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ç¤¹¡£¤³¤Á¤é¤ÏÊѹ¹¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¡£
¡¡¤½¤Î¤¿¤áÄ̾ï¤Î¥á¥½¥Ã¥É¤Î¤è¤¦¤ËÌá¤êÃͤη¿¤ò»ØÄꤷ¡¢¥á¥½¥Ã¥É¤«¤éÌá¤êÃͤò¼õ¤±¼è¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¡£
¡¡¤¿¤À¤·¡¢IEnumerator ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ë¤Ï object ·¿¤Î Current ¥×¥í¥Ñ¥Æ¥£¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
System.Collections.IEnumerator ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ÎÄêµÁ
namespace System.Collections
{
public interface IEnumerator
{
object Current { get; }
bool MoveNext();
void Reset();
}
}
¡¡¤³¤Î Current ¥×¥í¥Ñ¥Æ¥£¤Ë¤Ï
yield return ½èÍý¤òÍøÍѤ¹¤ë¤³¤È¤Ç¾ðÊó¤òÂåÆþ¤·¤Æ¤ª¤¯¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡²¼µ¤Î GameEventGetItem ¥¯¥é¥¹Æâ¤Î¥á¥½¥Ã¥É¤Ç¤Ï£³²Õ½ê¤ÇÍøÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£
/// <summary>
/// ¥³¥ë¡¼¥Á¥ó¤Ë¤è¤ëÈóƱ´ü
/// </summary>
/// <returns></returns>
public override IEnumerator ExecuteEventCoroutine() {
// ¤¹¤Ç¤Ë½ê»ý¤·¤Æ¤¤¤ë¥¢¥¤¥Æ¥à¤Î¾ì¹ç¡¢¥»¡¼¥Ö½èÍý¤Ï¤»¤º¡¢³ÍÆÀ½èÍý¤â¤·¤Ê¤¤
if (GameData.instance.itemInventryDatasList.Exists(x => x.itemName == itemName)) {
yield return false;¡¡¡¡//¡¡¢«¡¡¤³¤³
yield break;
}
// º£²ó½ªÎ»¤·¤¿²ñÏÃ¥¤¥Ù¥ó¥È¸å¤Ëɳ¤Å¤¤¤¿¥¤¥Ù¥ó¥È¤¬¤¢¤ë¤«³Îǧ
if (AdvEngineController.instance.AdvEngine.Param.GetParameterBoolean(utageParamBoolName.ToString())) {
GameData.instance.AddItemInventryData(itemName);
yield return true;¡¡¡¡//¡¡¢«¡¡¤³¤³
yield break;
}
yield return false;¡¡¡¡¡¡//¡¡¢«¡¡¤³¤³
}
¡¡¤³¤ì¤Ï¾¤Î¥¤¥Ù¥ó¥ÈÍѤλҥ¯¥é¥¹¤Ë¤âÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¡¡¤¤¤º¤ì¤â bool Ãͤò yield return ¤Ç Current ¤ËÂåÆþ¤·¤ÆÊÝ»ý¤·¤Æ¤¤¤Þ¤¹¤¬¡¢
¤³¤ÎÃͤòÂåÆþ¤·¤Æ¤¤¤ë¥¿¥¤¥ß¥ó¥°¤¬¥Ý¥¤¥ó¥È¤Ç¤¹¡£
¡¡¤³¤ÎÃͤϥ»¡¼¥Ö¤Î²ÄÈݤȤ·¤ÆÍøÍѤ¹¤ë¤¿¤á¤ËÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢¥»¡¼¥Ö¤Î²ÄÈÝȽÄ꤬·èÄꤷ¤¿¥¿¥¤¥ß¥ó¥°¤Ç true / false ¤òÂåÆþ¤·¤Æ¤¤¤Þ¤¹¡£
¡¡¤³¤Î Current ¤Îµ¡Ç½¤ò³èÍѤ·¡¢IEnumerator ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹·¿¤ÎÊÑ¿ô¤òÍÑ°Õ¤·¡¢¤³¤ÎÃæ¤Ë¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤Î½èÍý¤òÂåÆþ¤·¤Þ¤¹¡£
¡¡¤½¤Î¸å¡¢¤³¤ÎÂåÆþ¤µ¤ì¤Æ¤¤¤ëÊÑ¿ô¤ò»È¤Ã¤Æ¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£
¤³¤Î¤è¤¦¤ËÄ̾ï¤Î¥á¥½¥Ã¥É½èÍý¤ò¤½¤Î¤Þ¤Þ¼Â¹Ô¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¯¡¢°ìÅÙ¡¢Ê̤ÎÊÑ¿ô¤ËÆþ¤ì¤Æ¡¢
¤½¤ÎÊÑ¿ô¤ò»È¤Ã¤ÆÂåÆþ¤µ¤ì¤Æ¤¤¤ë¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¤³¤È¤ò¥é¥Ã¥×½èÍý¤È¤¤¤¤¤Þ¤¹¡£
¡¡ÊÑ¿ô¤òÄ̤¸¤Æ¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¡¢¤½¤ÎÆâÉô¤Ë¤·¤Æ yield return ½èÍý¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢
object ·¿¤Î¾ðÊó¤È¤·¤Æ¤Î¾ðÊó¤È¤·¤Æ Current ¥×¥í¥Ñ¥Æ¥£¤ËÃͤ¬ÂåÆþ¤µ¤ì¤ÆÊÝ»ý¤µ¤ì¤Þ¤¹¡£
¤³¤ÎÃͤò¼è¤ê½Ð¤¹¤³¤È¤Çµ¿»÷Ū¤Ê¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤ÎÌá¤êÃͤȤ·¤Æ³èÍѤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡¡¡¡¡¡¡¡¡¡¡// ¥¤¥Ù¥ó¥È½èÍýÍѤΥ³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤òÊÑ¿ô¤ËÂåÆþ(¥é¥Ã¥×¤¹¤ë)
IEnumerator gameEventCoroutine = gameEvent.ExecuteEventCoroutine();
¡¡¡¡¡¡¡¡¡¡¡¡// ¥¤¥Ù¥ó¥È¤Îµ¯Æ°(¼Â¹Ô)¡£¤³¤Î¥¤¥Ù¥ó¥È¤¬½ªÎ»¤¹¤ë¤Þ¤Ç½èÍý¤ÏÂÔµ¡¤·¡¢¼¡¤Î¥¤¥Ù¥ó¥È¤Ï¼Â¹Ô¤µ¤ì¤Ê¤¤¤³¤È¤òÊݾڤ¹¤ë
yield return StartCoroutine(gameEventCoroutine);
// ¤³¤Î¥Õ¥é¥°¤òÆþ¤ì¤Ê¤¤¤È¡¢°ìÅÙ true ¤Ë¤Ê¤Ã¤¿¤¢¤È¤Ë false ¤ËÌᤵ¤ì¤ë²ÄǽÀ¤¬¤¢¤ë
if (!isSaveOn && gameEventCoroutine.Current != null) {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// ¥³¥ë¡¼¥Á¥óÆâÉô¤«¤éÌá¤êÃͤò¼èÆÀ¤¹¤ë¥Æ¥¯¥Ë¥Ã¥¯
isSaveOn = (bool)gameEventCoroutine.Current; // ¢«¡¡¤³¤³¤Ç¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥ÉÆâ¤Î Current ¥×¥í¥Ñ¥Æ¥£¤«¤é¥á¥½¥Ã¥ÉÆâ¤Î¾ðÊó¤ò¼è¤ê½Ð¤·¤Æ¤¤¤ë
}
¡¡Current ¥×¥í¥Ñ¥Æ¥£¤Ï
object ·¿¤Ç¤¹¡£¤½¤Î¤¿¤á¡¢ÍøÍѤ·¤¿¤¤·¿¤Ë
·¿ÊÑ´¹(¥¥ã¥¹¥È)¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¡¡¤³¤³¤Ç¤Ï¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥ÉÆâ¤Ç true / false ¤ÎÃͤò yield return ¤·¤Æ¤¤¤ë¤Î¤Ç¡¢
¤½¤Î¾ðÊó¤ò object ·¿¤Ç¼è¤ê¤À¤·¤Æ¤«¤é (bool) ¤òÍøÍѤ·¤Æ 0bject ¢ª bool ¤Ë·¿ÊÑ´¹¤·¤ÆÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£
¡¡º£²ó¤Î¥×¥í¥°¥é¥à¤Î¾ì¹ç¡¢
¤¹¤Ù¤Æ¤Î¥¤¥Ù¥ó¥È½èÍýÆâ¤Ç¡¢yield return ¤Î½èÍý¤ò¹Ô¤¤¡¢true / false ¤ÎÃͤò Current ¤ËÊÝ»ý¤·¤Æ¤¤¤Þ¤¹¡£
³Æ»Ò¥¯¥é¥¹¤Î½èÍý¤ò¸«Ä¾¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¡¡¤½¤·¤Æ¤½¤Î¾ðÊó¤ò¥¤¥Ù¥ó¥È¤ò¼Â¹Ô¤·¤¿¸å¤Ç³Îǧ¤·¡¢º£²ó¼Â¹Ô¤·¤¿¥¤¥Ù¥ó¥È¤Ë¤ª¤¤¤Æ¡¢
¥»¡¼¥Ö¤¬É¬Íפˤʤ俤Τ«¡¢¤¢¤ë¤¤¤ÏÉÔÍפʤΤ«¤ò
¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤µ¤»¤ë¤¿¤á¤Îµ¡Ç½¤È¤·¤ÆÌòΩ¤Æ¤Æ¤¤¤Þ¤¹¡£
¡¡¤³¤Î¤è¤¦¤Ê·Á¤Ç¡¢
¼Â¹Ô¤·¤¿¥¤¥Ù¥ó¥È¤«¤é¥»¡¼¥Ö²ÄÈݤΥե£¡¼¥É¥Ð¥Ã¥¯¤Î»ÅÁȤߤòºî¤ë¤³¤È¤Ë¤è¤ê¡¢
¥»¡¼¥Ö¤¬É¬Íפʻþ¤Ë¤À¤±¥»¡¼¥Ö¤ò¹Ô¤¦¤è¤¦¤Ê¹½Â¤¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
»²¹Í¥µ¥¤¥È
¡Ú¥Ï¥ë¥·¥ª¥ó¥Ö¥í¥°¡ÛÍÍ
Unity¤Î¥³¥ë¡¼¥Á¥ó¤ÇÃͤòÊÖ¤¹ÊýË¡¡£¤¤¤¯¤Ä¤«ÊýË¡¤¢¤ë¤Ý¤¤¤±¤É¡¢¤½¤Î°ì¤Ä¤ò¾Ò²ð¡£