i-school - £²£Ä¥¿¥ï¡¼¥Ç¥£¥Õ¥§¥ó¥¹¡¡¼ê½ç£²£µ
¡¡°ú¤­Â³¤­¡¢¥²¡¼¥à¤Î¿Ê¹Ô´ÉÍý¤Îµ¡Ç½¤ò¼ÂÁõ¤·¤Æ¤¤¤­¤Þ¤¹¡£
º£²ó¤Î¼ê½ç¤Ç¤ÏŨ¤ÎÀ¸À®¤È°ÜÆ°¤Ë´Ø¤·¤Æ¡¢¥²¡¼¥à¤Î¿Ê¹Ô´ÉÍý¤Î¥¹¥Æ¡¼¥È¤ò±¿ÍѤ·¤ÆÀ©¸æ¤ò¹Ô¤¦µ¡Ç½¤òÄɲä·¤Þ¤¹¡£

¡ã¼ÂÁõÆ°²è­¡¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯

¡ã¼ÂÁõÆ°²è­¢¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯


¡¡°Ê²¼¤ÎÆâÍƤǼÂÁõ¤ò¿Ê¤á¤Æ¤¤¤­¤Þ¤¹¡£

¼ê½ç£²£µ¡¡¡¼¥²¡¼¥à¤Î¿Ê¹Ô´ÉÍý¤ÎÀ©¸æµ¡Ç½¤Î¼ÂÁõ­¢¡¼
£´£³¡¥GameState ¤òÍøÍѤ·¡¢GameManager ¤È EnemyGenerator ¤È CharaGenerator ¤ò½¤Àµ¤·¤Æ¡¢Å¨¤ÎÀ©¸æ(À¸À®¤È°ÜÆ°)µ¡Ç½¤òÄɲ乤ë



¡¡¿·¤·¤¤³Ø½¬ÆâÍƤϡ¢°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£

¡¡¡¦List ¤Î»È¤¤Êý­¢¡¡¡¼Remove ¥á¥½¥Ã¥É¡¼
¡¡¡¦¥Ç¥Õ¥©¥ë¥È°ú¿ô
¡¡¡¦Ìá¤êÃͤȰú¿ô¤òÍøÍѤ·¤¿½èÍý¤ÎµóÆ°¤òÇÄ°®¤¹¤ë
¡¡¡¦WaitUntil ¥¯¥é¥¹



£´£³¡¥GameState ¤òÍøÍѤ·¡¢GameManager ¤È EnemyGenerator ¤È CharaGenerator ¤ò½¤Àµ¤·¤Æ¡¢Å¨¤ÎÀ©¸æ(À¸À®¤È°ÜÆ°)µ¡Ç½¤òÄɲ乤ë

£±¡¥Àß·×


¡¡Á°²ó¤Î¼ê½ç¤Ë¤ª¤¤¤Æ¡¢GameState ¤ò³èÍѤ·¤¿¥í¥¸¥Ã¥¯¤ÎÁȤ߹þ¤ß¤ò¤ª¤³¤Ê¤¤¤Þ¤·¤¿¡£
À©¸æ¤Î·ë²Ì¡¢¥²¡¼¥à¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë´Ö¤À¤±¡¢²èÌ̤ò¥¿¥Ã¥×¤·¤Æ¥­¥ã¥éÇÛÃ֥ݥåץ¢¥Ã¥×¤¬É½¼¨¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£

¡¡º£²ó¤â¤³¤Î GameState ¤ò³èÍѤ·¤Æ¡¢Å¨¤Î°ÜÆ°¤Ë¤Ä¤¤¤ÆÀ©¸æ¤òÄɲ䷤Ƥ¤¤­¤Þ¤¹¡£

¡¡¸½ºß¤Ï¥­¥ã¥éÇÛÃ֥ݥåץ¢¥Ã¥×¤¬³«¤¤¤Æ¤¤¤ë´Ö¤âŨ¤¬°ÜÆ°¤ò¹Ô¤¦¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤³¤Î¾õÂ֤ΤޤޤǤ¹¤È¡¢¥×¥ì¥¤¥ä¡¼¤¬¥­¥ã¥é¤òÁªÂò¤¹¤ë»þ´Ö¤¬¤¢¤ê¤Þ¤»¤ó¡£
¾ï¤Ë¥ê¥¢¥ë¥¿¥¤¥à¤Ê¥²¡¼¥à´Ä¶­¤òÄ󶡤¹¤ë¤Î¤Ç¤¢¤ì¤ÐÌäÂê¤Î¤Ê¤¤½èÍý¤Ç¤¹¤¬¡¢º£²ó¤Î¥²¡¼¥à¤Ç¤Ï¡¢¥×¥ì¥¤¥ä¡¼¤Ë¤Ï¥Ý¥Ã¥×¥¢¥Ã¥×¤¬É½¼¨¤µ¤ì¤Æ¤¤¤ë´Ö¤Ë¤Ï¡¢¤É¤Î¥­¥ã¥é¤òÇÛÃÖ¤¹¤ë¤Î¤«¤ò¹Í¤¨¤ë»þ´Ö¤òÍÑ°Õ¤·¤¿¤¤¤È»×¤¤¤Þ¤¹¡£

¡¡¤½¤Î¤¿¤á¡¢¼ÂÁõ¤·¤¿¤¤µóÆ°¤È¤·¤Æ¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¡¦¥­¥ã¥é¤òÇÛÃÖ¤¹¤ë¥Ý¥Ã¥×¥¢¥Ã¥×¤¬³«¤¤¤Æ¤¤¤ë´Ö¤ÏŨ¤Î°ÜÆ°¤ò°ì»þÄä»ß¤µ¤»¤¿¤¤
¡¡¡¡¤¢¤ï¤»¤Æ¡¢Å¨¤ÎÀ¸À®¤â¹Ô¤ï¤Ê¤¤¤è¤¦¤Ë¤·¤¿¤¤

¡¡¡¦¤³¤Î¥Ý¥Ã¥×¥¢¥Ã¥×¤¬ÊĤ¸¤¿¤éŨ¤Î°ÜÆ°¤ÈŨ¤ÎÀ¸À®¤òºÆ³«¤µ¤»¤¿¤¤

¡¡¾åµ­¤Îµ¡Ç½¤Î¤¦¤Á¡¢Å¨¤Î°ÜÆ°¤ÎÀ©¸æ¤Ë´Ø¤·¤Æ¤Ï¡¢EnemyController Æâ¤Ë¤½¤ì¤¾¤ì¥á¥½¥Ã¥É¤¬½àÈ÷¤·¤Æ¤¢¤ê¤Þ¤¹¡£PauseMove ¥á¥½¥Ã¥É¤È ResumeMove ¥á¥½¥Ã¥É¤Ç¤¹¡£
¤½¤Î¤¿¤á¡¢¤³¤ÎÉôʬ¤Ë´Ø¤·¤Æ¤Ï¿·¤·¤¯½èÍý¤òºî¤ë¤Î¤Ç¤Ï¤Ê¤¯¤Æ¡¢Å¬Àڤʥ¿¥¤¥ß¥ó¥°¤Ç¸Æ¤Ó½Ð¤·Ì¿Îá¤ò¼Â¹Ô¤¹¤ì¤Ð½èÍý¤ò¼ÂÁõ¤Ç¤­¤ë¤È¹Í¤¨¤Þ¤¹¡£

¡¡¤è¤Ã¤Æ¡¢¤³¤Î PauseMove ¥á¥½¥Ã¥É¤ä ResumeMove ¥á¥½¥Ã¥É¤Î½èÍý¤ò½èÍý¤Î¥´¡¼¥ëÃÏÅÀ¤È¤¹¤ë¤Ê¤é¤Ð¡¢¤³¤Î½èÍý¤Ëé¤êÃ夯¤¿¤á¤Ë¤Ï¤É¤ó¤Ê½èÍý¤Îή¤ì¤òºî¤ë¤Ù¤­¤«¡£
¥í¥¸¥Ã¥¯¤òÁȤó¤Ç¤¤¤¯¤¿¤á¤Ë¤Ï¡¢¤¹¤Ç¤Ë¤¢¤ëÉôʬ¤ÎÇÄ°®¤ÈÍøÍѤ¹¤ë¥¿¥¤¥ß¥ó¥°¡¢¤½¤·¤Æ¡¢¤É¤ÎÉôʬ¤¬Â­¤ê¤Ê¤¤¤Î¤«¡¢¤È¤¤¤¦´ÑÅÀ¤Ç¹Í¤¨¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£

¡¡¤½¤¦¤Ê¤ë¤ÈÅöÁ³¤Ê¤¬¤é¡¢¤É¤Î¤«¤é½èÍý¤¬¥¹¥¿¡¼¥È¤¹¤ë¤Î¤«¤â¹Í¤¨¤Æ¤¤¤¯É¬Íפ¬À¸¤Þ¤ì¤Æ¤­¤Þ¤¹¡£



¡¡Â³¤±¤Æ¡¢Å¨¤ÎÀ¸À®¤Ë¤Ä¤¤¤Æ¤â¹Í¤¨¤Æ¤ß¤Þ¤¹¡£¤³¤Îµ¡Ç½¤Ï EnemyGenerator ¤¬´ÉÍý¤·¤Æ¤¤¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢À¸À®¤ò¹Ô¤Ã¤Æ¤¤¤ëÉôʬ¤Ë¡¢Á°²ó¤Î¥Ý¥Ã¥×¥¢¥Ã¥×¤Îɽ¼¨À©¸æ¤ÈƱ¤¸¤è¤¦¤Ë GameState ¤Î³Îǧ¤ò¹Ô¤¦¤è¤¦¤Ë¤¹¤ì¤Ð¤É¤¦¤Ç¤·¤ç¤¦¤«¡£
¥²¡¼¥à¤Î¿Ê¹Ô¾õÂÖ¤Ï GameState ¤¬´ÉÍý¤·¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢GameState ¤¬ Play ¤Î´Ö¤À¤±¡¢Å¨¤ÎÀ¸À®¤ò¹Ô¤¦¤è¤¦¤Ë¤¹¤ë¥¤¥á¡¼¥¸¤Ç¤¹¡£

¡¡¤³¤ÎÀ©¸æ¤ò¹Ô¤¦¤¿¤á¤Ë¤Ï¡¢¤É¤ÎÉôʬ¤ËÀ©¸æ¤ò¹Ô¤¨¤Ð¤¤¤¤¤Î¤«¤ò½èÍý¤ò¸«Ä¾¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£


£²¡¥GameManager ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¡¢GameState ¤òÍѤ¤¤¿¥²¡¼¥à¤Î¿Ê¹Ô´ÉÍý¤òÍøÍѤ·¤Æ¡¢Å¨¤Î°ÜÆ°¤ÎÀ©¸æ¤ò¹Ô¤¦


¡¡Å¨¤ÎÀ©¸æ¤ò¹Ô¤¦¤³¤È¤ò¹Í¤¨¤¿¾ì¹ç¡¢¥Ò¥¨¥é¥ë¥­¡¼¤Ë¤¢¤ë¤¹¤Ù¤Æ¤ÎŨÌò¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òõ¤·¤ÆÍøÍѤ¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£
¤Ç¤¹¤¬¡¢¤³¤Î½èÍý¤¬ÉÑÈˤˤª¤³¤Ê¤ï¤ì¤ë¤³¤È¤ò¹Í¤¨¤¿¾ì¹ç¡¢¤³¤Î¼êË¡¤ÏÈó¸úΨŪ¤Ç¤¢¤ê¡¢Í­¸ú¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£

¡¡À©¸æ¤ò¹Ô¤¦Âоݤò List ¤Ê¤É¤Î¥³¥ì¥¯¥·¥ç¥ó¤ËÂåÆþ¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢£±¤Ä¤ÎÊÑ¿ô¤Ç¡¢¥Ò¥¨¥é¥ë¥­¡¼¤Ë¤¢¤ëŨ¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î´ÉÍý¤ò¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

¡¡¤È¤Ï¤¤¤¨¡¢¤Ç¤Ï¡¢¤É¤Î¥¿¥¤¥ß¥ó¥°¤Ç¤³¤ì¤é¤ÎŨ¤Î¾ðÊó¤ò List ¤ËÂåÆþ¤¹¤ë¤«¡¢¤¬ÂçÀڤˤʤê¤Þ¤¹¡£

¡¡ºÇŬ²ò¤È¤·¤Æ¹Í¤¨¤é¤ì¤ë¤Î¤Ï¡¢Å¨¤òÀ¸À®¤·¤¿¥¿¥¤¥ß¥ó¥°¤Ç¤¹¡£Instantiate ¥á¥½¥Ã¥É¤Ï¥¯¥é¥¹¤ä¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¸µ¤Ë¤·¤Æ¥¯¥í¡¼¥ó¤ÎÀ¸À®¤ò¹Ô¤¦¥á¥½¥Ã¥É¤Ç¤¹¤¬¡¢
¹ç¤ï¤»¤Æ¡¢Ìá¤êÃͤȤ·¤ÆÀ¸À®¤·¤¿¥¯¥í¡¼¥ó¤Î¾ðÊó¤òÄ󶡤¹¤ëµ¡Ç½¤¬¤¢¤ê¤Þ¤¹¡£Ìá¤êÃͤˤϡ¢À¸À®¤·¤¿ºÝ¤Î¥¯¥é¥¹¡¢¤¢¤ë¤¤¤Ï¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿¤Î¾ðÊó¤¬Ìᤵ¤ì¤Þ¤¹¡£

¡¡¤è¤Ã¤Æ¡¢Å¨¤ÎÀ¸À®¤Î¥¿¥¤¥ß¥ó¥°¤Ë¹ç¤ï¤»¤Æ¡¢List ¤Ø¤³¤ÎÀ¸À®¤µ¤ì¤¿Å¨¤Î¾ðÊó¤òÂåÆþ¤¹¤ë¤³¤È¤¬½ÐÍè¤ì¤Ð¡¢Å¨¤¬À¸À®¤µ¤ì¤ë¤¿¤Ó¤Ë¼«Æ°Åª¤Ë List ¤Ø¤ÈÄɲ䷤Ƥ¤¤¯¥í¥¸¥Ã¥¯¤òÁȤळ¤È¤¬½ÐÍè¤Þ¤¹¡£



¡¡½èÍý¤Î°ã¤¤¤òÀººº¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£¹ç¤ï¤»¤Æ¡¢¤³¤Î List ¤Î¾ðÊó¤òÍøÍѤ·¤Æ¤¤¤¯Éôʬ¤Þ¤Ç¿¼Ë٤ꤷ¤Æ¡¢¤É¤¦¤¤¤Ã¤¿½èÍý¤¬±¿ÍѤò¹Í¤¨¤¿½èÍý¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤«¤ò³Îǧ¤·¤Þ¤¹¡£

¡ã­¡¡¡À¸À®¸å¤ËŨ¤ò¸«¤Ä¤±¤ë¾ì¹ç¡ä

¡¡Instantiate ¥á¥½¥Ã¥É¤ÇÀ¸À®¤µ¤ì¤¿Å¨¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ï¥Ò¥¨¥é¥ë¥­¡¼¤ËÇÛÃÖ¤µ¤ì¤Þ¤¹¡£
¤³¤Î¤È¤­¡¢Instantiate ¥á¥½¥Ã¥É¤Ï¥¯¥í¡¼¥ó¤òÀ¸À®¤¹¤ë¤À¤±¤Ç¤¹¤Î¤Ç¡¢¤½¤Î¸å¤Ï¡¢GameManager ¥¯¥é¥¹Æâ¤ÇÀ¸À®¤ò¹Ô¤Ã¤Æ¤¤¤¿¤È¤·¤Æ¤â¡¢»²¾È¤ò»ý¤¿¤Ê¤¤¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤Ê¤ê¤Þ¤¹¡£
¤Ä¤Þ¤ê¡¢Å¨¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤â¡¢GameManager ¤â¡¢¤ª¸ß¤¤¤ËÃΤé¤Ê¤¤¾õÂ֤Ȥ·¤Æ¸ºß¤¹¤ë¤³¤È¤Ë¤Ê¤ë¤Î¤Ç¡¢GameManager ¤¬Å¨¤ÎÀ©¸æ¤ò¹Ô¤¦¤¿¤á¤Ë¤Ï¡¢
¤Þ¤º¡¢Å¨¤òõ¤·¤Æ¡¢¤½¤Î¸å¡¢Å¨¤Î¾ðÊó(EnemyController)¤ò¼èÆÀ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

  // ¥Ò¥¨¥é¥ë¥­¡¼¤Ë¤¢¤ë¡¢¥¿¥°¤¬ Enemy ¤Ç¤¢¤ë¤¹¤Ù¤Æ¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òõ¤·¤ÆÇÛÎó¤ËÂåÆþ¤¹¤ë
  GameObject[] enemyObjs = GameObject.FindOfGameObjectsTag("Enemy");

  // Ũ£±ÂΤº¤Ä¤ËÄä»ßÌ¿Îá¤ò½Ð¤¹
  for(int i = 0; i < enemyObjs.Lenght; i++){

¡¡¡¡¡¡// GameObject ·¿¤Ê¤Î¤Ç¡¢¤Þ¤º¡¢Å¨¤Î¾ðÊó¤Ç¤¢¤ë EnemyController ¥¯¥é¥¹¤ò¼èÆÀ¤¹¤ë
      EnemyController enemy = enemyObjs[i].GetComponent<EnemyController>();

¡¡¡¡¡¡// EnemyController ¥¯¥é¥¹Æâ¤Ë¤¢¤ë PauseMove ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¤Æ¡¢Å¨¤Î°ÜÆ°¤ò°ì»þÄä»ß¤¹¤ë
      enemy.PauseMove():
  }

¡¡½èÍý¤ò¸«¤ë¤È¤ï¤«¤ë¤è¤¦¤Ë¡¢Å¨¤ò°ì»þÄä»ß¤¹¤ë¤¿¤Ó¤Ë¡¢Ëè²ó¡¢¥Ò¥¨¥é¥ë¥­¡¼¤Ë¤¢¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¸¡º÷¤È¼èÆÀ¡¢¤½¤·¤Æ¡¢EnemyController ¤Î¼èÆÀ¤¬É¬ÍפˤʤäƤ¤¤ë¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£

¡¡¥×¥í¥°¥é¥à¤ÎÎɤ¤Éôʬ¤Ï¡¢Æ±¤¸½èÍý¤Ï¤Ê¤ë¤Ù¤¯¥á¥½¥Ã¥Éñ°Ì¤Ç¤Þ¤È¤á¤Æ¤ª¤¤¤Æ¡¢¤½¤ì¤ò¼Â¹Ô¤¹¤ë¤³¤È¤Ë¤¢¤ê¤Þ¤¹¤¬¡¢¤³¤Î½èÍý¤ÏŨ¤òõ¤·¤¿¤ê¡¢Å¨¤Î¾ðÊó¤ò¼èÆÀ¤¹¤ë½èÍý¤òËè²ó¹Ô¤Ã¤Æ¤¤¤ë¤¿¤á¡¢
¡ÖŨ¤ò´ÉÍý¤¹¤ë¡×¤È¤¤¤¦´ÑÅÀ¤«¤é¤ß¤ë¤È¡¢¡ÖŨ¤òõ¤¹¡×¡ÖŨ¤Î¾ðÊó¤ò¼èÆÀ¤¹¤ë¡×¤È¤¤¤¦Éôʬ¤¬¥Í¥Ã¥¯¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

¡¡¤Ç¤­¤ì¤Ð¤³¤ì¤é¤Î½èÍý¼«ÂΤ⣱²ó¤Ç½ªÎ»¤·¤Æ¡¢´ÉÍý¤·¤Æ¤¤¤ëŨ¤ËÂФ·¤ÆÌ¿Îá¤ò½Ð¤¹¤À¤±¤Ë¤·¤¿¤¤¤È¹Í¤¨¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¤É¤¦¤¹¤ì¤Ð¤½¤Î¥í¥¸¥Ã¥¯¤¬½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤ë¤Î¤«¡¢ÌµÂ̤ˤʤäƤ¤¤ëÉôʬ¤Ï¤Ê¤¤¤À¤í¤¦¤«¡¢¤È¤¤¤¦»ëÅÀ¤Ç¥¹¥¯¥ê¥×¥È¤ò¸«Ä¾¤¹¤È¤è¤¤³Ø½¬¤Ë¤Ê¤ê¤Þ¤¹¡£


¡ã­¢¡¡À¸À®»þ¤ËŨ¤ò¸«¤Ä¤±¤ë¾ì¹ç¡ä

¡¡¤Ç¤Ï¡¢¼¡¤Ï¡¢º£²ó¼ÂÁõͽÄê¤Î¡¢Instantiate ¥á¥½¥Ã¥É¤ÎÌá¤êÃͤòÍøÍѤ·¤ÆŨ¤Î¾ðÊó¤ò´ÉÍý¤¹¤ë¾ì¹ç¤ÈÌ¿Îá¤Ç¤¹¡£
¼ÂºÝ¤Î¥¹¥¯¥ê¥×¥È¤Î½èÍý¤Ï¡¢Å¨¤ÎÀ¸À®¤È´ÉÍý¤ò¹Ô¤¦¥¯¥é¥¹¤¬°Û¤Ê¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢¤³¤Î¤Þ¤Þ¤Î½èÍý¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢¤³¤¦¤¤¤¦½èÍý¤Î¼ê½ç¤Ç¿Ê¤ó¤Ç¤¤¤ë¡¢¤È¤¤¤¦¤³¤È¤ò¹Í¤¨¤Æ¤¯¤À¤µ¤¤¡£

  // Ũ¤ÎÀ¸À®
¡¡EnemyController enemy = Instantiate(enemyPrefab);

¡¡// Ũ¤Î¾ðÊó¤ò List ¤ËÄɲÃ(GameObject ·¿¤Ç¤Ï¤Ê¤¤Éôʬ¤ËÃíÌÜ)
  enemiesList.Add(enemy)

¡¡¤Þ¤º¡¢¤³¤ÎÉôʬ¤À¤±¤ÇŨ¤ò´ÉÍý¤¹¤ë¤¿¤á¤Î½èÍý¤¬À°¤¤¤Þ¤¹¡£Á°²ó¤ÈÂ礭¤¯°ã¤¦¤Î¤Ï¡¢À¸À®¤Î¥¿¥¤¥ß¥ó¥°¤Ç List ¤ØÄɲ䷤Ƥ¤¤ë¤¿¤á¡¢Å¨¤Î¾ðÊ󤬾ï¤Ë¤¢¤ë¾õÂ֤ˤʤäƤ¤¤Þ¤¹¡£
¤è¤Ã¤Æ¡¢Å¨¤ÎÀ©¸æ¤ò¹Ô¤¦¤¿¤Ó¤ËɬÍפˤʤäƤ¤¤¿¡¢Å¨¤ò¸«¤Ä¤±¤ë¡¢¤È¤¤¤¦¼ê´Ö¤¬¤Ê¤¯¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤Ç¤¹¡£

¡¡¤Ä¤Þ¤ê¡¢¤³¤Î½èÍý¤¬¤¢¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢Á°²ó¤Ç¤ÏËè²ó¤ª¤³¤Ê¤Ã¤Æ¤¤¤¿Å¨¤òõ¤¹Éôʬ¤¬¡¢¤³¤Î½èÍý£±²ó¤À¤±¤ÇºÑ¤à¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¼¡¤ËÌ¿Îá¤Ç¤¹¡£

  for(int i = 0; i < enemiesList.Count; i++) {
      enemiesList[i].PauseMove();
  }

¡¡¤³¤Á¤é¤âÂ礭¤Ê°ã¤¤¤È¤·¤Æ¡¢GameObject ·¿¤ÎŨ¤Î¤Þ¤È¤Þ¤ê¤Ç¤Ï¤Ê¤¯¡¢ºÇ½é¤«¤é EnemyController ·¿¤È¤·¤ÆŨ¤ò£±¤Ä¤Î¤Þ¤È¤Þ¤ê¤Ë¤·¤Æ List ´ÉÍý¤·¤Æ¤¤¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢ÍøÍѤ·¤¿¤¤ EnemyController ·¿¤Î¾ðÊ󤬤¹¤°¤ËÍøÍѤǤ­¤ë¾õÂ֤ˤʤäƤ¤¤ë¤¿¤á¡¢GetComponent ¥á¥½¥Ã¥É¤Î½èÍý¤¬ÉÔÍפȤʤꡢ¤¹¤°¤Ë¡¢PauseMove ¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤·¤¬¼Â¹Ô½ÐÍè¤Æ¤¤¤Þ¤¹¡£

¡¡GameObject.Find ·Ï¤Î¥á¥½¥Ã¥É¤â¡¢GetComponent ¥á¥½¥Ã¥É¤â¡¢¤É¤Á¤é¤âÉé²Ù¤Î·Ú¤¤½èÍý¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£
­¡¤Î¼êË¡¤Î¾ì¹ç¡¢¤³¤ì¤é¤Î½èÍý¤òŨ¤ÎÀ©¸æ¤ò¹Ô¤¦¤¿¤Ó¤Ë¡¢Ëè²ó¹Ô¤¦¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£Å¨¤Î¿ô¤¬Áý¤¨¤ë¤Û¤É¤ËÉé²Ù¤â¾å¤¬¤ê¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢¤³¤ì¤é¤òÍøÍѤ»¤º¤Ë¡¢¤«¤Ä¡¢½èÍý¤Î¼Â¹Ô¤¬¤¹¤°¤Ë¤Ç¤­¤ë¤È¤¤¤¦Éôʬ¤Ç¹Í¤¨¤Æ¤â¡¢­¢¤Î¼êË¡¤ÎÊý¤¬Íý¤Ë¤«¤Ê¤Ã¤Æ¤ª¤ê¡¢¸úΨ²½¤µ¤ì¤¿¡¢¤è¤ê¤è¤¤¥í¥¸¥Ã¥¯¤Ç¤Î¼ÂÁõ¤Ç¤¢¤ë¤È¸À¤¨¤Þ¤¹¡£


¡¡À§È󤳤¦¤¤¤¦ÌÜÀþ¤Ç¥í¥¸¥Ã¥¯¤ò¸«¤Ê¤¬¤é¡¢½èÍý¤ò¹Í¤¨¤Æ¼ÂÁõ¤ò¹Ô¤¦¤è¤¦¤Ë¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£


GameManager.cs


¡¡¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤¿¤é¥»¡¼¥Ö¤ò¤·¤Þ¤¹¡£


£³¡¥¡ãList ¤Î»È¤¤Êý­¢¡¡¡¼Remove ¥á¥½¥Ã¥É¡¼¡ä


¡¡List.Remove(T·¿) ¥á¥½¥Ã¥É¤Îµ¡Ç½¤ÎÀâÌÀ¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡List¤ÎÃæ¤Ë¤¢¤ë¡¢°ú¿ô¤Ç»ØÄꤷ¤¿Í×ÁÇ(¥Ç¡¼¥¿)¤òºï½ü¤·¤Þ¤¹¡£
°ú¿ô¤¬ T ·¿¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢¤³¤ì¤Ï Add ¥á¥½¥Ã¥É¤ÈƱ¤¸¤Ç List ¤òÀë¸À¤·¤¿ºÝ¤Ë»È¤Ã¤¿·¿¤¬¼«Æ°Åª¤ËÆþ¤ê¤Þ¤¹¡£
º£²óºîÀ®¤·¤Æ¤¤¤ë enemiesList ÊÑ¿ô¤Ï EnemyController ·¿¤Î List ¤òÀë¸À¤·¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢°ú¿ô¤Ë¤Ï EnemyController ·¿¤Î¤ß»ØÄê¤Ç¤­¤Þ¤¹¡£

¡¡List¤ÇÀë¸À¤·¤Æ¤¤¤ë·¿¤ÈƱ¤¸·¿¤Ç¤¢¤ì¤Ð Remove ¥á¥½¥Ã¥É¤Ç List ¤«¤é»ØÄꤷ¤¿Í×ÁǤòºï½ü¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

  // List ¤«¤é EnemyController ·¿¤Î removeEnemy ÊÑ¿ô¤ÎÍ×ÁÇ(¤Ä¤Þ¤ê¡¢Å¨¤Î¾ðÊó)¤òºï½ü
¡¡enemiesList.Remove(removeEnemy);

¡¡Remove ¥á¥½¥Ã¥É¤Ç¤Ï°ú¿ô¤Ç»ØÄꤷ¤¿¥Ç¡¼¥¿¤Î¤ß¤òListÆ⤫¤éºï½ü¤·¤Þ¤¹¤Î¤Ç¡¢Â¾¤ÎÍ×ÁǤϺï½ü¤µ¤ì¤Þ¤»¤ó¡£

¡¡º£²ó¤Î¼ÂÁõ¥±¡¼¥¹¤Ç¤Ï¡¢Å¨¤¬Ç˲õ¤µ¤ì¤¿¥¿¥¤¥ß¥ó¥°¤Ç¤³¤Î½èÍý¤Îµ­½Ò¤µ¤ì¤Æ¤¤¤ë¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¡¢enemiesList ÊÑ¿ôÆâ¤Î»ØÄꤵ¤ì¤¿ EnemyController ¤Î¾ðÊó¤òºï½ü¤·¤Þ¤¹¡£


»²¹Í¥µ¥¤¥È
SamuraiBlog ÍÍ
¡ÚC#ÆþÌç¡ÛList¤Î»È¤¤ÊýÁí¤Þ¤È¤á(ArrayList/Add/Remove/¥½¡¼¥È/¸¡º÷)
https://www.sejuku.net/blog/47378


£´¡¥EnemyGenerator ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤Æ¡¢À¸À®¤·¤¿Å¨¤Î¾ðÊó¤ò GameManager Æâ¤Ë¤¢¤ë¥ê¥¹¥È¤ËÄɲ乤뵡ǽ¤ò¼ÂÁõ¤¹¤ë


¡¡¤¤¤Þ¤Þ¤Ç¤ÏŨ¤òÀ¸À®¤¹¤ë¤À¤±¤Ç½ªÎ»¤·¤Æ¤¤¤Þ¤·¤¿¤¬¡¢º£²ó¤«¤é¤Ï¡¢À¸À®¤·¤¿Å¨¤Î¾ðÊó¤ò GameManager ¥¯¥é¥¹¤Ë¤¢¤ë List ¤ËÂФ·¤ÆÄ󶡤ò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

¡¡¤³¤¦¤¤¤Ã¤¿¤È¤­¤ËÊØÍø¤Ê¤Î¤¬¥á¥½¥Ã¥É¤Î°ú¿ô¤Ç¤¹¡£À¸À®¤ò¹Ô¤Ã¤¿Å¨¤Î¾ðÊó¤ò EnemyController ·¿¤È¤·¤Æ°ú¿ô¤òÄ̤¸¤Æ GameManager ¥¯¥é¥¹Â¦¤ØÆϤ±¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
GameManager ¦¤Ë¤Ï AddEnemyList ¥á¥½¥Ã¥É¤¬¤¢¤ê¡¢¤³¤Î°ú¿ô¤È¤·¤Æ EnemyController ·¿¤òÄɲ䷤Ƥ¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤³¤Î°ú¿ôÉôʬ¤¬¾ðÊó¤Î¼õ¤±¼è¤ê¸ý¤Ç¤¢¤ë¤È¹Í¤¨¤Æ¤¯¤À¤µ¤¤¡£

¡¡¤è¤Ã¤Æ¡¢EnemyGenerator ¦¤Î½èÍý¤È¤·¤Æ¤Ï¡¢AddEnemyList ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ëºÝ¤Ë¡¢EnemyController ·¿¤Î¾ðÊó¤òÍÑ°Õ¤¹¤ëɬÍפ¬À¸¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£

¡¡º£²ó¤Ï¤³¤Î½èÍý¤ò¡¢Ìá¤êÃͤò³èÍѤ·¤¿¥á¥½¥Ã¥É¤â¹ç¤ï¤»¤ÆÍøÍѤ·¤Æ¼ÂÁõ¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£
¥í¥¸¥Ã¥¯¤¬Æñ¤·¤¯¤Ê¤Ã¤Æ¤­¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤·¤Ã¤«¤ê¤È½èÍý¤Îή¤ì¤òÇÄ°®¤·¤Ê¤¬¤é¿Ê¤á¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£

¡¡ºÇ½é¤ÏÌá¤êÃͤò»È¤ï¤º¤Ë¡¢¼«Ê¬¤Ê¤ê¤Î¼ÂÁõ¤ò¤·¤Æ¤ß¤Æ¤â¤¤¤¤¤Ç¤·¤ç¤¦¡£À¸À®¤µ¤ì¤¿Å¨¤Î¾ðÊ󤬡¢EnemyGenerator ¤«¤é GameManager ¤Ø¤ÈÆϤ±¤ë¤³¤È¤¬½ÐÍè¤ë¤«¡¢
¤½¤Î¥¤¥á¡¼¥¸¤¬Ê¨¤¯¤«¤É¤¦¤«¤¬¡¢¤È¤Æ¤â½ÅÍפÊÆâÍƤˤʤê¤Þ¤¹¡£


EnemyGenerator.cs


¡¡¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤¿¤é¥»¡¼¥Ö¤·¤Þ¤¹¡£


£µ¡¥¡ã¥Ç¥Õ¥©¥ë¥È°ú¿ô¡ä


¡¡¤³¤ì¤Ï C# ¤Îµ¡Ç½¤Î£±¤Ä¤Ç¤¹¡£

¡¡°ú¿ô¤òÀßÄꤹ¤ë¾ì¹ç¡¢·¿ ÊÑ¿ô¤ò£±¤Ä¤Î¥»¥Ã¥È¤Ë¤·¤Æµ­½Ò¤·¤Þ¤¹¤¬¡¢¤³¤³¤Ë¤Ï¥Ç¥Õ¥©¥ë¥È°ú¿ô¤È¤¤¤¦µ¡Ç½¤òÍøÍѤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¥Ç¥Õ¥©¥ë¥È°ú¿ô¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ëºÝ¤Î°ú¿ô¤ò¾Êά¤¹¤ë¤³¤È¤Ç¡¢¥Ç¥Õ¥©¥ë¥È°ú¿ô¤Ë»ØÄꤷ¤¿Ãͤòµ¬ÄêÃͤȤ·¤ÆÍøÍѤ·¤Æ¤¯¤ì¤Þ¤¹¡£

¡¡º£²óÍøÍѤ·¤Æ¤¤¤ëÉôʬ¤Ç¤¹¡£

    /// <summary>
    /// Ũ¤ÎÀ¸À®
    /// </summary>
    /// <param name="generateNo"></param>
    /// <returns></returns>
    public EnemyController GenerateEnemy(int generateNo = 0) {¡¡¡¡


¡¡¤³¤Î¾ì¹ç¡¢GenerateEnemy ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢°ú¿ô¤ò»ØÄꤷ¤Æ¼Â¹Ô¤¹¤ë°Ê³°¤Ë¡¢¾Êά¤·¤Æ¼Â¹Ô¤¹¤ë¤³¤È¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¤½¤Î¤¿¤á¡¢°ú¿ô¤¬¤¢¤ë¥á¥½¥Ã¥É¤Ç¤¢¤ë¤â¤«¤«¤ï¤é¤º

GenerateEnemy():

¡¡¤³¤Î¤è¤¦¤Ë°ú¿ô¤¬¶õ¤Ã¤Ý¤Ç¤¢¤Ã¤Æ¤â¡¢¥¨¥é¡¼¤Ë¤Ï¤Ê¤ê¤Þ¤»¤ó¡£
°ú¿ô¤ò¾Êά¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢¥Ç¥Õ¥©¥ë¥È°ú¿ô¤È¤·¤ÆÀßÄꤵ¤ì¤Æ¤¤¤ë 0 ¤ÎÃͤ¬µ¬ÄêÃͤȤ·¤Æ¼«Æ°Åª¤ËÍøÍѤµ¤ì¤Þ¤¹¡£

¡¡¥Ç¥Õ¥©¥ë¥È°ú¿ô¤Ï¤¢¤¯¤Þ¤Ç¤â¾Êά¤·¤¿¾ì¹ç¤Î¤ß»È¤ï¤ì¤ë¤Î¤Ç¡¢¤­¤Á¤ó¤È½ñ¤¤¤Æ¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢½ñ¤«¤ì¤Æ¤¤¤ëÃͤ¬»È¤ï¤ì¤Þ¤¹¡£¡¡

GenerateEnemy(3);

¡¡¤³¤Î¤è¤¦¤Ë¤«¤±¤Ð¡¢¤¤¤Ä¤âÄ̤ê 3 ¤ò¥á¥½¥Ã¥É¤ËÅϤ¹¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¤è¤Ã¤Æ¥Ç¥Õ¥©¥ë¥È°ú¿ô¤Ï¡¢¾å½ñ¤­²Äǽ¤Êµ¬ÄêÃͤòÍÑ°Õ¤·¤Æ¤ª¤¯¤³¤È¤¬¤Ç¤­¤ëµ¡Ç½¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¤¹¤Ç¤Ë°Õ¼±¤»¤º¤Ë¡¢¿§¡¹¤ÊÉôʬ¤ÇÍøÍѤ·¤Æ¤¤¤ë¤È»×¤¤¤Þ¤¹¡£

¡¡¥Þ¥Ë¥å¥¢¥ë¤ä¡¢¥á¥½¥Ã¥É¤ò¥Þ¥¦¥¹¥ª¡¼¥Ð¡¼¤·¤¿¤È¤­¤Ëɽ¼¨¤µ¤ì¤ë¥Ø¥ë¥×¥á¥Ã¥»¡¼¥¸¤Ç [ ] ¤Ç°Ï¤Þ¤ì¤Æµ­ºÜ¤µ¤ì¤Æ¤¤¤ëÊÑ¿ô¤¬¤¢¤ê¤Þ¤¹¤¬¡¢
¤³¤ì¤¬¥Ç¥Õ¥©¥ë¥È°ú¿ô¤ËÅö¤¿¤ê¤Þ¤¹¡£¤³¤Î¾ì¹ç¡¢É¬¤º¡¢µ¬ÄêÃͤ¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

¡¡DOTween ¤Î¥á¥½¥Ã¥É¤Ë¤Ïɬ¤ºÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¸«¤Æ¤ß¤ë¤Èʬ¤«¤ê¤ä¤¹¤¤¤Ç¤¹¡£


»²¹Í¥µ¥¤¥È
[[¥ä¥¹¥Î¡¼¥È¤Ïº£Æü¤â¹Í¤¨¤ë ÍÍ
[C# ÆþÌç] ¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹ºÝ¤Ë°ú¿ô¤ò¾Êά²Äǽ¤Ë¤¹¤ë>https://yaspage.com/cs-method-optional/]]



¡¡Rigidbody ¥¯¥é¥¹¤Î AddForce ¥á¥½¥Ã¥É¤Ç¤âÍøÍѤµ¤ì¤Æ¤¤¤ë¤Î¤Ç¾Ò²ð¤·¤Þ¤¹¡£

¡¡AddForce ¥á¥½¥Ã¥É¤Ë¤Ï£²¤Ä¤Î°ú¿ô¤¬¤¢¤ê¤Þ¤¹¤¬¡¢Âè2°ú¿ô¤Ë¤Ï¤³¤Î¥Ç¥Õ¥©¥ë¥È°ú¿ô¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢Âè2°ú¿ô¤Ë´Ø¤·¤Æ¤Ï¾Êά¤·¤Æ½ñ¤¯¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
Âè1°ú¿ô¤Ë¤Ï¥Ç¥Õ¥©¥ë¥È°ú¿ô¤¬¤Ê¤¤¤Î¤Ç¡¢É¬¤º½ñ¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£

¡¡¤½¤Î¤¿¤á

Rigibbody.AddForce(transform.up * 100);¡¡¡¡//¡¡¢«¡¡Âè2°ú¿ô¤ò¾Êά¡£µ¬ÄêÃͤǤ¢¤ë ForceMode.Force ¤¬¼«Æ°Åª¤ËŬÍѤµ¤ì¤ë

Rigidbody.AddForce(transform.up * 100, ForceMode.Impulse);

¡¡¤³¤Î¤è¤¦¤Ë¡¢¤É¤Á¤é¤Ç¤â½ñ¤±¤Þ¤¹¡£
¾Êά¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢ForceMode.Force ¤¬µ¬ÄêÃͤȤ·¤ÆÀßÄꤵ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢¤³¤Á¤é¤ò¼«Æ°Åª¤Ë»È¤¤¤Þ¤¹¡£


»²¹Í¥µ¥¤¥È
Unity ¥¹¥¯¥ê¥×¥È¡¦¥ê¥Õ¥¡¥ì¥ó¥¹
Rigidbody-AddForce



¡¡¤½¤Î¤Û¤«¡¢Raycast ¥á¥½¥Ã¥É¤Î¾ì¹ç¡¢°ú¿ô¤Î¥ª¡¼¥Ð¡¼¥í¡¼¥Éµ¡Ç½¤Ë²Ã¤¨¤Æ¡¢¤½¤ì¤¾¤ì¤Î°ú¿ô¤Ë¡¢Ê£¿ô¤Î¥Ç¥Õ¥©¥ë¥È°ú¿ô¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
³ÆÊÑ¿ô¤Î¸å¤Ë = ¤Çµ¬ÄêÃͤòÀßÄê¤ò¤·¤Æ¤¤¤ëÉôʬ¤¬¥Ç¥Õ¥©¥ë¥È°ú¿ô¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¤³¤ì¤é¤â»²¹Í¤Ë¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£


»²¹Í¥µ¥¤¥È
Unity ¥¹¥¯¥ê¥×¥È¡¦¥ê¥Õ¥¡¥ì¥ó¥¹Physics-Raycast


£¶¡¥¡ãÌá¤êÃͤȰú¿ô¤òÍøÍѤ·¤¿½èÍý¤ÎµóÆ°¤òÇÄ°®¤¹¤ë¡ä


¡¡º£²ó¡¢GameManager ¤ò½¤Àµ¤·¤¿ºÝ¤Ë¡¢AddEnemyList ¥á¥½¥Ã¥É¤Ë¤Ï EnemyController ·¿¤Î°ú¿ô¤Î»ØÄ꤬Äɲ䵤ì¤Æ¤¤¤Þ¤¹¡£
¤¤¤Þ¤Þ¤Ç¤Ï AddEnemyList ¥á¥½¥Ã¥É¤Ë¤Ï°ú¿ô¤Î»ØÄ꤬¤¢¤ê¤Þ¤»¤ó¤Ç¤·¤¿¤Î¤Ç¡¢¥á¥½¥Ã¥É¤ò½ñ¤¯¤À¤±¤Ç¼Â¹Ô¤Ç¤­¤Þ¤·¤¿¤¬¡¢
º£²ó¤«¤é¡¢¤³¤Î AddEnemyList ¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤·¤ò¹Ô¤¦ºÝ¤Ë¤Ï¡¢°ú¿ô¤Ë¾ðÊó¤òÍÑ°Õ¤·¤Æ¤¤¤Ê¤¤¤È½èÍý¤¬¹Ô¤¨¤Ê¤¤¾õÂ֤ˤʤê¤Þ¤·¤¿¡£


GameManager.cs
    public void AddEnemyList(EnemyController enemy) {
        enemiesList.Add(enemy);
        generateEnemyCount++;
    }

¡¡°ú¿ô¤Ë»ØÄꤵ¤ì¤Æ¤¤¤ë¾ðÊó¤Ï EnemyController ·¿¤Ç¤¹¡£¤³¤Î¾ðÊó¤òÍøÍѤ·¤Æ¡¢Å¨¤Î¾ðÊó¤ò¥ê¥¹¥È¤ËÄɲä·¤¿¤¤¤¿¤á¤Ç¤¹¡£
¤è¤Ã¤Æ¡¢AddEnemyList ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤Ë¤Ï¡¢EnemyController ·¿¤Î¾ðÊó¤òÍÑ°Õ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£



¡¡¤³¤ì¤Ë¹ç¤ï¤»¤Æ¡¢EnemyGenerator Æâ¤Î PreparateGenerateEnemy ¥á¥½¥Ã¥É¤ÎÃæ¤Ç¤Îµ­½Ò¤¬Êѹ¹¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
Ũ¤òÀ¸À®¤¹¤ë½èÍý¼«ÂΤÏƱ¤¸¤Ç¤¹¤¬¡¢À¸À®¤µ¤ì¤¿Å¨¤Î¾ðÊó¤ò GameManager ¦¤ËÍÑ°Õ¤·¤¿¥ê¥¹¥È¤ØÄ󶡤¹¤ë½èÍý¤¬Äɲ䵤ì¤Æ¤¤¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢GenerateEnemy ¥á¥½¥Ã¥É¤Ë¤ÏÌá¤êÃͤξðÊó¤¬Äɲ䵤ì¤Æ¤¤¤Þ¤¹¡£

EnemyGenerator.cs
    // Ũ¤ÎÀ¸À®¤·¡¢Å¨¤ÎÀ¸À®¿ô¤Î¥«¥¦¥ó¥È¥¢¥Ã¥×¤È List ¤Ø¤ÎÄɲÃ
    gameManager.AddEnemyList(GenerateEnemy());

EnemyGenerator.cs
¡¡  public EnemyController GenerateEnemy(int generateNo = 0) {

       (¾Êά)

       return enemyController;
    }

¡¡AddEnemyList ¥á¥½¥Ã¥É¤Î¼Â¹Ô¤ÎÉôʬ¤ò¡¢Ìá¤êÃͤ¬È¿±Ç¤µ¤ì¤¿¾ì¹ç¤Î½èÍý¤Ë½ñ¤­Âؤ¨¤Æ¤ß¤ë¤È¤ï¤«¤ê¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£

EnemyGenerator.cs
    // Ũ¤ÎÀ¸À®¤·¡¢Å¨¤ÎÀ¸À®¿ô¤Î¥«¥¦¥ó¥È¥¢¥Ã¥×¤È List ¤Ø¤ÎÄɲÃ
    gameManager.AddEnemyList(GenerateEnemy() ¤Î¼Â¹Ô·ë²Ì¤Ë¤è¤ë EnemyController ·¿¤Î¾ðÊó);

¡¡¡¡¡¡¢­
¡¡
GameManager.cs
    public void AddEnemyList(EnemyController enemy <= GenerateEnemy() ¤Î¼Â¹Ô·ë²Ì¤Ë¤è¤ë EnemyController ·¿¤Î¾ðÊó¤¬ enemy ÊÑ¿ô¤ËÂåÆþ¤µ¤ì¤Æ¤¤¤ë) {
        enemiesList.Add(enemy);  // <=¤½¤Î¾ðÊó¤ò¥ê¥¹¥È¤ËÄɲ䷤Ƥ¤¤ë
        generateEnemyCount++;
    }
¡¡
¡¡À¸À®¤µ¤ì¤¿Å¨¤Î¾ðÊó¤¬ AddEnemyList ¥á¥½¥Ã¥É¤Ë°ú¿ô¤òÄ̤¸¤ÆÅϤµ¤ì¤Æ¡¢¤½¤ì¤¬¥ê¥¹¥È¤ØÄɲ䵤ì¤ë¡¢¤È¤¤¤¦¥í¥¸¥Ã¥¯¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¤³¤Î½èÍý¤Ë¤è¤Ã¤Æ¡¢EnemyGenerator ¤Î¾ðÊ󤬥¯¥é¥¹¤òĶ¤¨¤Æ GameManager ¤ËÆϤ¯¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

¡¡°ú¿ô¤ÈÌá¤êÃͤˤè¤ë½èÍý¤ò³èÍѤ¹¤ë¤³¤È¤Ç½èÍý¤Ë½ÀÆðÀ­¤ÈÈÆÍÑÀ­¤ò¤â¤¿¤é¤·¤Þ¤¹¡£
½èÍý¤Îή¤ì¤òÆɤ߲ò¤­¤Ê¤¬¤é¡¢¤É¤Î¤è¤¦¤Ë¤·¤Æ¥í¥¸¥Ã¥¯¤¬¹½À®¤µ¤ì¤Æ¤¤¤ë¤«¤ò¤·¤Ã¤«¤ê¤ÈÇÄ°®¤·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£


£·¡¥¡ãWaitUntil ¥¯¥é¥¹¡ä


¡¡WaitUntil ¥¯¥é¥¹¤Ï¡¢¥³¥ë¡¼¥Á¥óÆâ¤ÇÌ¿Îá¤Ç¤­¤ëÂÔµ¡½èÍý¤Ç¤¹¡£yield return ¤ò¤Ä¤±¤Æ new (¥¤¥ó¥¹¥¿¥ó¥¹)¤·¤Þ¤¹¡£

¡¡WaitUntil ¥¯¥é¥¹¤Ë¤Ï¥³¥ó¥¹¥È¥é¥¯¥¿¡¦¥á¥½¥Ã¥É¤¬¤¢¤ê¡¢¥¤¥ó¥¹¥¿¥ó¥¹¤µ¤ì¤ë¤È¡¢°ú¿ô¤Ç»ØÄꤷ¤¿¾ò·ï¤òËþ¤¿¤¹¤Þ¤Ç¡¢½èÍý¤ò°ì»þÃæÃǤ·¤ÆÂÔµ¡¤µ¤»¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

  // GameState ¤Î¸½ºßÃÍ(currentGameState)¤¬ Play ¤Ë¤Ê¤ë¤Þ¤Ç½èÍý¤ò°ì»þÃæÃǤ¹¤ë
¡¡yield return new WaitUntil(() => gameManager.currentGameState == GameManager.GameState.Play);

¡¡º£²ó¤Î¾ì¹ç¤Î¾ò·ï¤Ï¡¢¡ÚGameManager ¥¯¥é¥¹Æâ¤Ë¤¢¤ë currentGameState ÊÑ¿ô¤¬ Play ¤Ë¤Ê¤Ã¤¿¤é¡Û¤È¤¤¤¦¾ò·ï¤òËþ¤¿¤¹¤³¤È¤¬É¬Íפˤʤê¤Þ¤¹¡£
¤³¤Î¾ò·ï¤òËþ¤¿¤¹¤Þ¤Ç¤Ï¡¢¤³¤³¤Ç½èÍý¤¬°ì»þÃæÃǤ·¤Þ¤¹¤Î¤Ç¡¢¼¡¤Î¹Ô¤Ë¤¢¤ëŨ¤Î°ÜÆ°¤òºÆ³«¤¹¤ë½èÍý¤¬¼Â¹Ô¤µ¤ì¤Ê¤¤¾õÂÖ¤òºî¤ê½Ð¤·¤Æ¤¤¤Þ¤¹¡£


»²¹Í¥µ¥¤¥È
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
WaitUntil
https://docs.unity3d.com/ja/current/ScriptReferenc...


£¸¡¥CharaGenerator ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤Æ GameState ¤ÎÀÚ¤êÂؤ¨µ¡Ç½¤ò¼ÂÁõ¤¹¤ë


¡¡ºÇ¸å¤Ë CharaGenerator ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤Þ¤¹¡£
GameState ¤Î¾õÂ֤˹ç¤ï¤»¤ÆŨ¤ÎÀ¸À®¤òÄä»ß/ºÆ³«¤¹¤ëµ¡Ç½¤Ï¼ÂÁõ¤Ç¤­¤¿¤Î¤Ç¤¹¤¬¡¢¤³¤Î GameState ¼«ÂΤòÀÚ¤êÂؤ¨¤ëµ¡Ç½¤Ï¤Þ¤À¤¢¤ê¤Þ¤»¤ó¡£
¤è¤Ã¤Æ¡¢¤É¤³¤«¤Î¥¿¥¤¥ß¥ó¥°¤Ç¡¢GameState ¤òŬÀÚ¤ËÊѹ¹¤ò¹Ô¤Ã¤Æ¤¤¤¯¤³¤È¤Ë¤è¤ê¡¢¥²¡¼¥à¤ÎÁ´ÂΤοʹԴÉÍý¤Î¾õÂÖ¤¬ÊѲ½¤¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¥­¥ã¥é¤òÇÛÃÖ¤¹¤ë¥Ý¥Ã¥×¥¢¥Ã¥×¤¬³«¤¤¤¿¤È¤­¡¢¤½¤·¤ÆÊĤ¸¤ë¤È¤­¤Ë GameState ¤ÎÀÚ¤êÂؤ¨¤òŬÀڤ˹Ԥ¦¤³¤È¤¬¤Ç¤­¤ì¤ÐÁÛÄꤷ¤Æ¤¤¤ëµóÆ°¤Ë¤Ê¤ê¤½¤¦¤Ç¤¢¤ë¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£

¡¡¤³¤ÎÀÚ¤êÂؤ¨¤Î¥¿¥¤¥ß¥ó¥°¤¬½ÅÍפˤʤê¤Þ¤¹¡£¤É¤ÎÉôʬ¤ËÄɲ乤ì¤Ð¤¦¤Þ¤¯µ¡Ç½¤¹¤ë¤Î¤«¡¢¥¹¥¯¥ê¥×¥È¤ò³Îǧ¤¹¤ëÁ°¤Ë¼«Ê¬¤Ç¥í¥¸¥Ã¥¯¤ò¹Í¤¨¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¤â¤Á¤í¤ó¡¢¸í¤Ã¤¿¥¿¥¤¥ß¥ó¥°¤Ë¤·¤Æ¤·¤Þ¤¦¤È¡¢Â¾¤Î¥×¥í¥°¥é¥à¤Ë¤â±Æ¶Á¤¬µÚ¤Ó¤Þ¤¹¡£²¿¸Î¤Ê¤é¤Ð¡¢GameState ¤Ë¤è¤Ã¤Æ¤¹¤Ç¤Ë¥­¥ã¥é¤òÇÛÃÖ¤¹¤ë½èÍý¤¬À©¸æ¤µ¤ì¤Æ¤¤¤ë¤¿¤á¤Ç¤¹¡£

¡¡TODO ¤ÎÉôʬ¤ò»²¹Í¤Ë¤·¤Ê¤¬¤é¡¢¤É¤¦¤¤¤Ã¤¿¥×¥í¥°¥é¥à¤ò½ñ¤±¤Ð¤¤¤¤¤Î¤«Ä©À路¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£


CharaGenerator.cs

<= ¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤­¤Þ¤¹¡£


¡¡¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤¿¤é¥»¡¼¥Ö¤·¤Þ¤¹¡£


£¸¡¥¥²¡¼¥à¤ò¼Â¹Ô¤·¤ÆÆ°ºî¤ò³Îǧ¤¹¤ë


¡¡¥²¡¼¥à¤ò¼Â¹Ô¤·¤Æ¡¢¥­¥ã¥éÇÛÃ֤Υݥåץ¢¥Ã¥×¤ò³«¤¤¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
Ũ¤ÎÀ¸À®¤¬Ää»ß¤·¡¢°ÜÆ°¤·¤Æ¤¤¤ëŨ¤¬Ää»ß¤¹¤ì¤ÐÀ©¸æÀ®¸ù¤Ç¤¹¡£

¡¡¥Ý¥Ã¥×¥¢¥Ã¥×¤òÊĤ¸¤¿¤é¡¢ºÆÅÙ¡¢Å¨¤ÎÀ¸À®¤¬³«»Ï¤µ¤ì¤Æ¡¢Å¨¤Î°ÜÆ°¤¬ºÆ³«¤µ¤ì¤ì¤ÐÀ©¸æÀ®¸ù¤Ç¤¹¡£


¡ã¼ÂÁõÆ°²è­¡¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯

¡ã¼ÂÁõÆ°²è­¢¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯


¡¡¥ê¥¹¥È¤ò³èÍѤ¹¤ë¤³¤È¤Ë¤è¤Ã¤ÆƱ¤¸·¿¤Î¾ðÊó¤ò´ÉÍý¤·¤Æ±¿ÍѤ¹¤ë¤³¤È¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£
¿¤¯¤Î¥²¡¼¥à¤ÇÍøÍѤǤ­¤ëµ¡Ç½¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢½èÍý¤Îή¤ì¤ò³Îǧ¤·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£



¡¡°Ê¾å¤Ç¤³¤Î¼ê½ç¤Ï½ªÎ»¤Ç¤¹¡£

¡¡¼¡¤Ï¡¡¼ê½ç£²£¶¡¡¡Ý¥²¡¼¥à¤Î¥¯¥ê¥¢¾ò·ï¤ÈȽÄ굡ǽ¤Î¼ÂÁõ¡Ý¡¡¤Ç¤¹¡£