Unity¤Ë´ØÏ¢¤¹¤ëµ­»ö¤Ç¤¹

¡¡¥í¡¼¥°¥é¥¤¥È·Ï¤Î¥²¡¼¥à(Sly The Spire¡¢¥Õ¥¡¥ó¥È¥à¥í¡¼¥º¤Ê¤É)¤Ë¸«¤é¤ì¤ë¡¢¥×¥ì¥¤¥ä¡¼¤¬£±¥Þ¥¹¤º¤Ä°ÜÆ°¤·¤Æ¥´¡¼¥ëÃÏÅÀ¤Ø¸þ¤«¤¤¤Ê¤¬¤é¡¢
³Æ¥Þ¥¹¤´¤È¤Ëʬ´ô(ÁªÂò»è)¤¬¤¢¤ê¡¢Ç¤°Õ¤Î¥¤¥Ù¥ó¥È¤ò¼Â¹Ô¤·¤Ê¤¬¤é¿Ê¹Ô¤¹¤ë¥¿¥¤¥×¤Î¥²¡¼¥à¥·¥¹¥Æ¥à¤Î¼ÂÁõÎã¤Ç¤¹¡£

¡¡¤³¤³¤Ç¤Ï³Æ¥Þ¥¹ÌܤËÊ£¿ô¤Îʬ´ô½èÍý¤¬¤¢¤ë·Á¤Ç£±¥Þ¥¹¤º¤Ä¥¤¥Ù¥ó¥È¤ò¿Ê¹Ô¤µ¤»¤Æ¤¤¤¯ÊýË¡¤ò¼ÂÁõ¤·¤Þ¤¹¡£
ºÇ½é¤Î¥Þ¥¹¤Ïʬ´ô¤Ê¤·¡¢¼¡¤Î¥Þ¥¹¤Ï£²¤Ä¤Îʬ´ô¤¬¤¢¤ë¡¢¤È¤¤¤Ã¤¿¤è¤¦¤Ê¥í¡¼¥°¥é¥¤¥È·Ï¤Î¥²¡¼¥à¤Ç¤è¤¯¤ß¤é¤ì¤ë¥¤¥Ù¥ó¥È¥·¥¹¥Æ¥à¤Ç¤¹¡£



£±¡¥Àß·×

¡¡
¡¡Á°²ó¤Ë¤Ä¤Å¤­¡¢¹ç·×£´²ó¤Î¼ê½ç¤Ëʬ¤±¤Æ¼ÂÁõ¤ò¹Ô¤¤¤Þ¤¹¡£

¡»£±¡¥UI À©ºî
¡»£²¡¥¥¤¥Ù¥ó¥ÈÍѤΥ¯¥é¥¹À©ºî
¡»£³¡¥¥Ç¡¼¥¿¥Ù¡¼¥¹À©ºî
¡þ£´¡¥´ÉÍý¥¯¥é¥¹À©ºî

¡¡º£²ó¤Ï¡Ú£´¡¥´ÉÍý¥¯¥é¥¹À©ºî¡Û¤ò¹Ô¤¤¤Þ¤¹¡£

¡¡´ÉÍý¥¯¥é¥¹¤òºîÀ®¤·¡¢¤³¤ì¤Þ¤Ç¤ËÀ©ºî¤·¤Æ¤­¤¿¤¹¤Ù¤Æ¤Î¾ðÊó¤ò¤Ä¤Ê¤®¹ç¤ï¤»¤Æ¥²¡¼¥à¥í¥¸¥Ã¥¯¤òºî¤ê¤Þ¤¹¡£


£²¡¥¡¥¥µ¥ó¥×¥ë¥³¡¼¥É­¡¡¡¡¼¥²¡¼¥à¤Î¥³¥ó¥È¥í¡¼¥é¡¼¥¯¥é¥¹¡¼

¡¡
¡¡¥×¥ì¥¤¥ä¡¼¤È¥Þ¥¹°ÜÆ°¡¢¥¤¥Ù¥ó¥Èʬ´ô¤òÀ©¸æ¤¹¤ë¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤Þ¤¹¡£


using System.Collections.Generic;
using UnityEngine;
using UniRx;
using UnityEngine.UI;

public class MainGameManager : MonoBehaviour
{
    [SerializeField] private Transform routeBasePrefab;
    [SerializeField] private Transform routeBaseSetTran;

    [SerializeField] private GameObject routeImagePrefab;
    [SerializeField] private Transform playerIcon;

    [SerializeField] private RouteCollection routeCollection;
    [SerializeField] private Transform eventButtonTran;
        
    private List<Transform> routeList = new();
    private List<EventBase> currentEventList = new();
    private int currentRouteIndex = 0; 
    

    void Start() {
        LoadRouteDatas();
        GenerateEventButtons();
    }

    /// <summary>
    /// ¥ë¡¼¥ÈºîÀ®
    /// </summary>
    private void LoadRouteDatas() {
        for (int i = 0; i < routeCollection.routeList.Count; i++) {

            // ¥ë¡¼¥ÈÇÛÃÖÍѤΥ١¼¥¹ºîÀ®
            Transform ruteBase = Instantiate(routeBasePrefab, routeBaseSetTran, false);
            routeList.Add(ruteBase);

            int index = 0;
            GameObject ruteBrunch = null;
            
            // ¥ë¡¼¥ÈÆâ¤Î¥¤¥Ù¥ó¥Èʬ¤À¤±¥Þ¥¹ÌÜÇÛÃÖ
            for (int eventCount = 0; eventCount < routeCollection.routeList[i].eventList.Count; eventCount++) {
                index = eventCount; ;
                ruteBrunch = Instantiate(routeImagePrefab, ruteBase, false);
            }
            
            // ¥¤¥Ù¥ó¥È¤¬£±¤Ä¤·¤«¤Ê¤¤¾ì¹ç¤Ë¤Ï¥Þ¥¹¤Î½ÄÊý¸þ¤ò¹­¤²¤ë
            if (index == 0) {
                ruteBrunch.GetComponent<RectTransform>().sizeDelta = new(100, 240);
            }
        }
    }

    /// <summary>
    /// ¥×¥ì¥¤¥ä¡¼¥¢¥¤¥³¥ó¤ÎÇÛÃÖ°ÌÃ֤ι¹¿·
    /// </summary>
    /// <param name="nextParentObj"></param>
    private void SetPlayerLocation(Transform nextParentObj) {
        playerIcon.SetParent(nextParentObj);
        playerIcon.localPosition = new(0, 50, 0);

        // TODO ¥Þ¥¹¤Î¿§¤òÊѤ¨¤ë¡£UI ¤´¤Èº¹¤·Âؤ¨¤Ê¤É¤ÎÂбþ²Äǽ
        nextParentObj.GetComponent<Image>().color = Color.red;
    }

    /// <summary>
    /// ¥²¡¼¥à¿Ê¹ÔÍѤΥ롼¥Èʬ´ô¥Ü¥¿¥ó¤ÎºîÀ®
    /// </summary>
    private void GenerateEventButtons() {
        
        // ¼¡¤Î¥¤¥Ù¥ó¥ÈÍѤΥܥ¿¥óÀ¸À®
        for (int i = 0; i < routeCollection.routeList[currentRouteIndex].eventList.Count; i++) {

            int index = i;
            EventBase eventButton = Instantiate(routeCollection.routeList[currentRouteIndex].eventList[i], eventButtonTran, false);
            
            // ¥Ü¥¿¥ó¤Î¥¤¥Ù¥ó¥È¤ò¹ØÆÉ
            eventButton.OnClickEventButtonObserbable
                .ThrottleFirst(System.TimeSpan.FromSeconds(2.0f))
                .Subscribe(async _ =>
                {
                    // ¥×¥ì¥¤¥ä¡¼¤Î¥¢¥¤¥³¥ó°ÌÃÖÀßÄê(»Ò¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤¹¤ë)
                    SetPlayerLocation(routeList[currentRouteIndex].GetChild(index));
                    
                    await eventButton.ExecuteEvent();
                    
                    HandleEventCompletion(index);
                })
                .AddTo(this);

            currentEventList.Add(eventButton);
        }
    }

    /// <summary>
    /// ¥¤¥Ù¥ó¥È½ªÎ»¸å¤Î½èÍý
    /// </summary>
    /// <param name="index"></param>
    private void HandleEventCompletion(int index) {
        DestroyEndEvents();

        currentRouteIndex++;
        
        CheckRoute();
    }

    /// <summary>
    /// ¥ë¡¼¥È¤¬»Ä¤Ã¤Æ¤¤¤ë¤«¥Á¥§¥Ã¥¯
    /// »Ä¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¥ë¡¼¥È¥¯¥ê¥¢
    /// »Ä¤Ã¤Æ¤¤¤ì¤Ð¼¡¤Îʬ´ôÍѤΥܥ¿¥ó¤ÎºîÀ®
    /// </summary>
    private void CheckRoute() {
        
        // ¥ë¡¼¥È¤¬»Ä¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¥ë¡¼¥È¥¯¥ê¥¢
        if (routeCollection.routeList.Count <= currentRouteIndex) {
            Debug.Log("¥ë¡¼¥È½ªÎ»");
            return;
        }
        
        // ¥ë¡¼¥È¤¬»Ä¤Ã¤Æ¤¤¤ì¤Ð¼¡¤Îʬ´ôÍѤΥܥ¿¥ó¤ÎºîÀ®
        GenerateEventButtons();
    }
    
    /// <summary>
    /// ʬ´ôÍѥܥ¿¥ó¤Îºï½ü
    /// </summary>
    private void DestroyEndEvents() {

        // ¥¤¥Ù¥ó¥ÈÍѤΥܥ¿¥óºï½ü
        for (int i = 0; i < currentEventList.Count; i++) {
            Destroy(currentEventList[i].gameObject);
        }
        
        // Á°¤Î¥¤¥Ù¥ó¥È¤òºï½ü
        currentEventList.Clear();
    }
}


¡ã½èÍý¤ÎÀâÌÀ¡ä

¥¯¥é¥¹¤Î¥Õ¥£¡¼¥ë¥É¤È¥×¥í¥Ñ¥Æ¥£

¡¡routeBasePrefab, routeBaseSetTran, routeImagePrefab, playerIcon, routeCollection, eventButtonTran ¤Ê¤É¤Ï¡¢
Unity¤Î¥·¥ê¥¢¥é¥¤¥º¤µ¤ì¤¿¥Õ¥£¡¼¥ë¥É¤Ç¡¢¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤«¤éÀßÄê¤Ç¤­¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ä¥×¥ì¥Ï¥Ö¡¢¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Ê¤É¤òÀßÄê¤Ç¤­¤Þ¤¹¡£

¡¡routeList ¤Ï¡¢RouteBase ¤ò³ÊǼ¤¹¤ë¤¿¤á¤Î Transform ¥ª¥Ö¥¸¥§¥¯¥È¤Î¥ê¥¹¥È¤Ç¤¹¡£
¥ë¡¼¥È¤ÏÊ£¿ô¤Î¥¤¥Ù¥ó¥È¤«¤é¹½À®¤µ¤ì¤Æ¤ª¤ê¡¢¤½¤ì¤é¤Î´ÉÍý¤ò¤·¤Þ¤¹¡£

¡¡currentEventList ¤Ï¡¢¸½ºß¤Î¥ë¡¼¥ÈÆâ¤Çɽ¼¨Ãæ¤Î¥¤¥Ù¥ó¥È¥Ü¥¿¥ó¤ò³ÊǼ¤¹¤ë¥ê¥¹¥È¤Ç¤¹¡£
¤³¤Á¤é¤ËÅÐÏ¿¤·¤Æ¤ª¤¯¤³¤È¤Ç¡¢¸å¤Ç¥¤¥Ù¥ó¥È¥Ü¥¿¥ó¤òºï½ü¤¹¤ë¤¿¤á¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£

¡¡currentRouteIndex ¤Ï¡¢¸½ºß¤Î¥ë¡¼¥È¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò¼¨¤¹À°¿ô¤Ç¤¹¡£
¥²¡¼¥à¤Î¿Ê¹ÔÃæ¤Ë¸½ºß¤Î¥ë¡¼¥È¤òÄÉÀפ¹¤ë¤¿¤á¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£


Start ¥á¥½¥Ã¥É
¡¡
¡¡LoadRouteDatas() ¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¡¢¥ë¡¼¥È¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤È RouteBase ¤ÎºîÀ®¤ò¹Ô¤¤¤Þ¤¹¡£
¡¡GenerateEventButtons() ¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¡¢¸½ºß¤Î¥ë¡¼¥È¤ËÂбþ¤¹¤ë¥¤¥Ù¥ó¥È¥Ü¥¿¥ó¤ÎÀ¸À®¤ò¹Ô¤¤¤Þ¤¹¡£


LoadRouteDatas ¥á¥½¥Ã¥É

¡¡LoadRouteDatas ¥á¥½¥Ã¥É¤Ï¡¢¥ë¡¼¥È¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤È RouteBase ¤ÎºîÀ®¤ò¹Ô¤¦¥á¥½¥Ã¥É¤Ç¤¹¡£

¡¡routeCollection Æâ¤Î³Æ¥ë¡¼¥È¥Ç¡¼¥¿¤ËÂФ·¤Æ¡¢°Ê²¼¤Î½èÍý¤ò·«¤êÊÖ¤·¤Þ¤¹¡£
¥ë¡¼¥ÈÍѤΥ١¼¥¹¥ª¥Ö¥¸¥§¥¯¥È RouteBase ¤ò Instantiate ¤ò»È¤Ã¤ÆºîÀ®¤·¡¢routeBaseSetTran ¤Î»Ò¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤ÆÇÛÃÖ¤·¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢¥²¡¼¥à²èÌ̤ǤϿåÊ¿Êý¸þ¤Ë¥ë¡¼¥È¤¬Ê¤֤褦¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¼¡¤Ë¡¢¤½¤Î RouteBase Æâ¤Ë³Æ¥ë¡¼¥È¤Î¥¤¥Ù¥ó¥Èʬ´ô¤òɽ¤¹ Route ¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¤·¤Þ¤¹¡£
¥¤¥Ù¥ó¥È¤Î¿ô¤¬£±¤Ä¤Î¾ì¹ç¡¢Route ¥ª¥Ö¥¸¥§¥¯¥È¤Î½ÄÊý¸þ¤Î¥µ¥¤¥º¤òÊѹ¹¤·¡¢Ä¹ºÙ¤¤£±¥Þ¥¹¤Ë¤·¤Þ¤¹¡£
¥¤¥Ù¥ó¥È¤Î¿ô¤¬£²¤Ä¤Î¾ì¹ç¡¢¿âľÊý¸þ¤Ëʤ֣²¥Þ¥¹¤Ë¤·¤Þ¤¹¡£


SetPlayerLocation ¥á¥½¥Ã¥É

¡¡SetPlayerLocation ¥á¥½¥Ã¥É¤Ï¡¢¥×¥ì¥¤¥ä¡¼¥¢¥¤¥³¥ó¤Î°ÌÃÖ¤ò¹¹¿·¤¹¤ë¤¿¤á¤Î¥á¥½¥Ã¥É¤Ç¤¹¡£
ÆÃÄê¤Î¥Þ¥¹Ìܤ˥ץ쥤¥ä¡¼¥¢¥¤¥³¥ó¤ò°ÜÆ°¤·¡¢Å¬ÀڤʰÌÃÖ¤ËÀßÄꤷ¤Þ¤¹¡£
¤Þ¤¿¡¢¥Þ¥¹¤Î¿§¤òÊѹ¹¤¹¤ë¤³¤È¤Ç¡¢Ä̲ᤷ¤Æ¤­¤¿Ê¬´ôɽ¸½¤â²Äǽ¤È¤·¤Æ¤¤¤Þ¤¹¡£


GenerateEventButtons ¥á¥½¥Ã¥É

¡¡GenerateEventButtons ¥á¥½¥Ã¥É¤Ï¡¢¸½ºß¤Î¥ë¡¼¥È¤ËÂбþ¤¹¤ë¥¤¥Ù¥ó¥È¥Ü¥¿¥ó¤òÀ¸À®¤·¡¢¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¥¤¥Ù¥ó¥È¤ò¹ØÆɤ¹¤ë¤¿¤á¤Î¥á¥½¥Ã¥É¤Ç¤¹¡£

¡¡¸½ºß¤Î¥ë¡¼¥È¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿³Æ¥¤¥Ù¥ó¥È¤ËÂФ·¤Æ°Ê²¼¤Î½èÍý¤ò·«¤êÊÖ¤·¤Þ¤¹¡£
¥¤¥Ù¥ó¥È¥Ü¥¿¥ó¤ò Instantiate ¤ò»ÈÍѤ·¤ÆÀ¸À®¤·¡¢eventButtonTran ¤Î»Ò¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤ÆÇÛÃÖ¤·¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢¥²¡¼¥à²èÌ̤ˤϥ¤¥Ù¥ó¥Èʬ´ôÁªÂòÍѤΥܥ¿¥ó¤¬¿åÊ¿Êý¸þ¤ËʤӤޤ¹¡£

¡¡¥¤¥Ù¥ó¥È¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¥¤¥Ù¥ó¥È¤ò ThrottleFirst ¤Ç½ÅÊ£ËÉ»ßÀ©¸æ¤·¡¢¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¤ò¼Â¹Ô¤·¤Þ¤¹¡£
¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯»þ¤Ë¡¢¥×¥ì¥¤¥ä¡¼¥¢¥¤¥³¥ó¤òŬÀڤʰÌÃÖ¤ËÀßÄꤷ¡¢ExecuteEvent ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¤³¤È¤Ç¡¢³Æ¥Ü¥¿¥ó¤Ëɳ¤Å¤¤¤¿¥¤¥Ù¥ó¥È¤ò¼Â¹Ô¤·¤Þ¤¹¡£
À¸À®¤·¤¿¥¤¥Ù¥ó¥È¥Ü¥¿¥ó¤ò currentEventList ¤ËÄɲä·¤Þ¤¹¡£¤³¤¦¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢¥¤¥Ù¥ó¥È½ªÎ»¸å¡¢¥¤¥Ù¥ó¥È¥Ü¥¿¥ó¤ò®¤ä¤«¤Ëºï½ü¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£


HandleEventCompletion ¥á¥½¥Ã¥É

¡¡HandleEventCompletion ¥á¥½¥Ã¥É¤Ï¡¢¥¤¥Ù¥ó¥È¤Î´°Î»¸å¤Ë¼Â¹Ô¤µ¤ì¤ë½èÍý¤ò´ÉÍý¤¹¤ë¥á¥½¥Ã¥É¤Ç¤¹¡£

¡¡É½¼¨¤µ¤ì¤Æ¤¤¤ë¥¤¥Ù¥ó¥È¥Ü¥¿¥ó¤òºï½ü¤¹¤ë¤¿¤á¤Î DestroyEndEvents ¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£
¸½ºß¤Î¥ë¡¼¥È¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò¹¹¿·¤·¤Þ¤¹¡£

¡¡¼¡¤Î¥ë¡¼¥È¤¬Â¸ºß¤¹¤ë¤«¤É¤¦¤«¤òȽÄꤹ¤ë¤¿¤á¤Î CheckRoute ¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£


CheckRoute ¥á¥½¥Ã¥É

¡¡CheckRoute ¥á¥½¥Ã¥É¤Ï¡¢¥²¡¼¥àÆâ¤Î¥ë¡¼¥È¤¬»Ä¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«¤ò³Îǧ¤·¡¢½èÍý¤òʬ´ô¤¹¤ë¥á¥½¥Ã¥É¤Ç¤¹¡£

¡¡¥ë¡¼¥È¤¬¤¹¤Ù¤Æ´°Î»¤·¤¿¾ì¹ç¡¢¥²¡¼¥àÆâ¤Î¤¹¤Ù¤Æ¤Î¥ë¡¼¥È¤¬´°Î»¤·¤¿¤«¤É¤¦¤«¤ò³Îǧ¤·¤Þ¤¹¡£
¤â¤·´°Î»¤·¤Æ¤¤¤ë¾ì¹ç¡¢¥Ç¥Ð¥Ã¥°¥í¥°¤Ë "¥ë¡¼¥È½ªÎ»" ¤Èɽ¼¨¤·¡¢¥²¡¼¥à¤ò½ªÎ»¤·¤Þ¤¹¡£¼ÂºÝ¤Ë¤Ï¤³¤³¤Ë¡¢¥²¡¼¥à½ªÎ»½èÍý¤ò¼ÂÁõ¤·¤Þ¤·¤ç¤¦¡£

¡¡¥ë¡¼¥È¤¬»Ä¤Ã¤Æ¤¤¤ë¾ì¹ç¡¢¼¡¤Îʬ´ôÍѤΥܥ¿¥ó¤òÀ¸À®¤¹¤ë¤¿¤á¤Ë GenerateEventButtons ¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢¼¡¤Î¥ë¡¼¥È¤Ë¿Ê¹Ô¤·¡¢¿·¤·¤¤¥¤¥Ù¥ó¥È¥Ü¥¿¥ó¤¬À¸À®¤µ¤ì¤Þ¤¹¡£

¡¡¤³¤³¤Þ¤Ç¤Î½èÍý¤Îή¤ì¤Ë¤è¤Ã¤Æ¡¢ºÆÅÙ¡¢¥¤¥Ù¥ó¥È¥Ü¥¿¥ó¤òÀ¸À®¤¹¤ëÉôʬ¤Ë½èÍý¤¬Ìá¤ë¤¿¤á¡¢£±¤Ä¤Î¥²¡¼¥à¥µ¥¤¥¯¥ë¤¬´°À®¤·¤Æ¤¤¤ë¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£


DestroyEndEvents ¥á¥½¥Ã¥É

¡¡DestroyEndEvents ¥á¥½¥Ã¥É¤Ï¡¢É½¼¨¤µ¤ì¤Æ¤¤¤ë¥¤¥Ù¥ó¥È¥Ü¥¿¥ó¤òºï½ü¤¹¤ë¤¿¤á¤Î¥á¥½¥Ã¥É¤Ç¤¹¡£

¡¡currentEventList Æâ¤Î³Æ¥¤¥Ù¥ó¥È¥Ü¥¿¥ó¤òºï½ü¤·¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢¥¤¥Ù¥ó¥È¥Ü¥¿¥ó¤¬²èÌ̾夫¤éºï½ü¤µ¤ì¤Þ¤¹¡£
Á°¤Î¥¤¥Ù¥ó¥È¥Ü¥¿¥ó¤¬¤¹¤Ù¤Æºï½ü¤µ¤ì¤¿¸å¡¢currentEventList ¤ò¥¯¥ê¥¢¤·¤Þ¤¹¡£

¡¡¤³¤ì¤Ë¤è¤ê¡¢¿·¤·¤¤¥ë¡¼¥È¤Ë°Ü¹Ô¤¹¤ë¤È¡¢¸Å¤¤¥¤¥Ù¥ó¥È¥Ü¥¿¥ó¤¬ºï½ü¤µ¤ì¡¢¿·¤·¤¤¥¤¥Ù¥ó¥È¥Ü¥¿¥ó¤¬À¸À®¤µ¤ì¤ë½àÈ÷¤¬À°¤¤¤Þ¤¹¡£


¡ã¥¯¥ê¥Ã¥¯¥¤¥Ù¥ó¥È¤Î¹ØÆÉ¡ä


¡¡¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¥¤¥Ù¥ó¥È¤Ï¡¢³Æ¥¤¥Ù¥ó¥È¥Ü¥¿¥ó(EventBase ¥¯¥é¥¹Æâ)¤Î OnClickEventButtonObserbable ¤ò»ÈÍѤ·¤Æ¹ØÆɤµ¤ì¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢¥¤¥Ù¥ó¥È¥Ü¥¿¥ó¤¬¥¯¥ê¥Ã¥¯¤µ¤ì¤¿¤È¤­¤Ë¡¢¥×¥ì¥¤¥ä¡¼¥¢¥¤¥³¥ó¤Î°ÌÃÖ¤ÎÀßÄê¡¢¥¤¥Ù¥ó¥È¤Î¼Â¹Ô¡¢¤ª¤è¤Ó¥¤¥Ù¥ó¥È´°Î»¸å¤Î½èÍý¤¬¼Â¹Ô¤µ¤ì¤Þ¤¹¡£

¡¡¥¯¥ê¥Ã¥¯¥¤¥Ù¥ó¥È¤Ï ThrottleFirst ¤ò»ÈÍѤ·¤ÆÀ©¸æ¤µ¤ì¡¢Ï¢Â³¤·¤¿¥¯¥ê¥Ã¥¯¤òËɤ®¤Þ¤¹¡£

¡¡ºÇ½ªÅª¤Ë¡¢AddTo(this) ¤ò»ÈÍѤ·¤Æ¥¤¥Ù¥ó¥È¤ÎÅÐÏ¿¤ò´ÉÍý¤·¡¢this ¥ª¥Ö¥¸¥§¥¯¥È(MainGameManager)¤ËÂФ·¤Æ¥ê¥ó¥¯¤µ¤ì¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢¥¯¥é¥¹¤ÎÇË´þ(¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÎÇ˲õ)¤ÈƱ»þ¤Ë¥¯¥ê¥Ã¥¯¥¤¥Ù¥ó¥È¤Î¹ØÆɤ⽪λ¤·¤Þ¤¹¡£



¡¡¥Ü¥¿¥ó¤Î¹ØÆɽèÍý¤ò EventBase ¥¯¥é¥¹Æâ¤Ç¤Ï¤Ê¤¯¡¢MainGameManager ¥¯¥é¥¹Æâ¤Ç¹Ô¤¦¥¢¥×¥í¡¼¥Á¤Ï¡¢
¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¥¤¥Ù¥ó¥È¤¬ EventBase ¥¯¥é¥¹¤Ë°Í¸¤»¤º¡¢¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¤Ë±þ¤¸¤Æ°Û¤Ê¤ë½èÍý¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤Ë½ÀÆðÀ­¤òÄ󶡤¹¤ëÀ߷פǤ¹¡£

¡¡¼çÍפÊÍøÅÀ¤È¤·¤Æ¡¢¼¡¤ÎÅÀ¤¬µó¤²¤é¤ì¤Þ¤¹¡£


£±¡¥Ê¬Î¥À­

¡¡¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¤Ë´ØÏ¢¤¹¤ë½èÍý¤ò MainGameManager ¤Ë½¸Ç¼¤¹¤ë¤³¤È¤Ç¡¢¥¤¥Ù¥ó¥È¥Ù¡¼¥¹¤Î¥¯¥é¥¹¤Ï¤½¤ÎÌò³ä¤ËÀìÇ°¤Ç¤­¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢¥¯¥é¥¹¤ÎÌò³ä¤¬ÌÀ³Î¤Ëʬ¤«¤ì¡¢¥³¡¼¥É¤ÎÍý²ò¤¬Íưפˤʤê¤Þ¤¹¡£


£²¡¥½ÀÆðÀ­

¡¡¿·¤·¤¤¥¤¥Ù¥ó¥È¤òÄɲ乤ëºÝ¡¢¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯½èÍý¤òÊѹ¹¤¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¡¢¤³¤ì¤ò MainGameManager Æâ¤Ç¹Ô¤¨¤ë¤¿¤á¡¢
¥¤¥Ù¥ó¥È¤Ë´ØÏ¢¤¹¤ë¤¹¤Ù¤Æ¤Î½èÍý¤òÃæ±û¤Ç´ÉÍý¤Ç¤­¤Þ¤¹¡£¤³¤ì¤Ï¡¢¾­ÍèŪ¤Ë¥³¡¼¥É¤ò³ÈÄ¥¤·¤ä¤¹¤¯¤¹¤ë½ÅÍפÊÍ×ÁǤǤ¹¡£


£³¡¥¥Æ¥¹¥È²ÄǽÀ­

¡¡¥Ü¥¿¥ó¥¯¥ê¥Ã¥¯½èÍý¤¬ MainGameManager Æâ¤Ë½¸Ç¼¤µ¤ì¤Æ¤¤¤ë¤¿¤á¡¢¥æ¥Ë¥Ã¥È¥Æ¥¹¥È¤ò¼Â¹Ô¤·¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£
°Û¤Ê¤ë¥¤¥Ù¥ó¥È¤Î¥Ï¥ó¥É¥ê¥ó¥°¡¦¥·¥Ê¥ê¥ª¤ò¥Æ¥¹¥È¤¹¤ë¤Î¤¬ÍưפǤ¹¡£


¡ã¥¤¥Ù¥ó¥È½èÍý¤ÎÃê¾Ý²½¡ä


¡¡¥¤¥Ù¥ó¥È¤ÎÃê¾Ý²½¤Ï¡¢¤³¤Î¥²¡¼¥à¤Î½ÀÆðÀ­¤È³ÈÄ¥À­¤ò¸þ¾å¤µ¤»¤ë½ÅÍפÊÍ×ÁǤǤ¹¡£
¤³¤ì¤Ë¤è¤ê¡¢°Û¤Ê¤ë¼ïÎà¤Î¥¤¥Ù¥ó¥È¤ò´Êñ¤ËÄɲä·¡¢¤½¤ì¤¾¤ì¤Î¥¤¥Ù¥ó¥È¤¬°Û¤Ê¤ë¿¶¤ëÉñ¤¤¤ò»ý¤Ä¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£


EventBase ¥¯¥é¥¹

¡¡EventBase ¥¯¥é¥¹¤ÏÃê¾Ý¥¯¥é¥¹¤Ç¡¢¼ÂºÝ¤Î¥¤¥Ù¥ó¥È¤Ë¶¦Ä̤Υץí¥Ñ¥Æ¥£¤È¥á¥½¥Ã¥É¤òÄ󶡤·¤Þ¤¹¡£
¤³¤ì¤Ë¤Ï ExecuteEvent ¥á¥½¥Ã¥É¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤Î¥á¥½¥Ã¥É¤Ï³Æ¥µ¥Ö¥¯¥é¥¹¤Ç¼ÂÁõ¤µ¤ì¤Þ¤¹¡£

¡¡¤Þ¤¿¡¢OnClickEventButtonObserbable ¤È¤¤¤¦ IObservable<Unit> ¥×¥í¥Ñ¥Æ¥£¤¬Ä󶡤µ¤ì¡¢¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¥¤¥Ù¥ó¥È¤¬È¯À¸¤·¤¿¤È¤­¤ËÄÌÃΤò¼õ¤±¤ë¤¿¤á¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£
¤³¤Î¥×¥í¥Ñ¥Æ¥£¤Ë¤è¤ê¡¢¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¥¤¥Ù¥ó¥È¤òÈó¾ï¤Ë¸ú²ÌŪ¤Ë¹ØÆɤǤ­¤Þ¤¹¡£


³Æ¶ñÂÎŪ¤Ê¥¤¥Ù¥ó¥È¥¯¥é¥¹ (Îã: SearchEvent, BattleEvent):

¡¡³Æ¶ñÂÎŪ¤Ê¥¤¥Ù¥ó¥È¥¯¥é¥¹¤Ï EventBase ¥¯¥é¥¹¤ò·Ñ¾µ¤·¡¢¶¦Ä̤Υץí¥Ñ¥Æ¥£¤È¥á¥½¥Ã¥É¤ò¼õ¤±·Ñ¤®¤Þ¤¹¡£
¤·¤«¤·¡¢³Æ¥¤¥Ù¥ó¥È¥¯¥é¥¹¤Ï°Û¤Ê¤ë¿¶¤ëÉñ¤¤¤ò»ý¤Ä¤¿¤á¡¢ExecuteEvent ¥á¥½¥Ã¥É¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤ÆÆȼ«¤Î¼ÂÁõ¤òÄ󶡤·¤Þ¤¹¡£

¡¡¤³¤ì¤Ë¤è¤ê¡¢Î㤨¤Ð¡Öõº÷¥¤¥Ù¥ó¥È¡×¤È¡ÖÀïÆ®¥¤¥Ù¥ó¥È¡×¤Ê¤É¡¢°Û¤Ê¤ë¥¿¥¤¥×¤Î¥¤¥Ù¥ó¥È¤ò´Êñ¤ËÄɲäǤ­¤Þ¤¹¡£
³Æ¥¤¥Ù¥ó¥È¤Ï¶¦Ä̤Υ¯¥ê¥Ã¥¯¥¤¥Ù¥ó¥È¤ò»ý¤Á¡¢¥¯¥ê¥Ã¥¯¤¬È¯À¸¤¹¤ë¤ÈÂбþ¤¹¤ë ExecuteEvent ¥á¥½¥Ã¥É¤¬¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£

¡¡¤³¤Î¥¢¥×¥í¡¼¥Á¤Ë¤è¤ê¡¢¿·¤·¤¤¥¤¥Ù¥ó¥È¤òÄɲ乤ëºÝ¤Ë¤Ï¡¢¿·¤·¤¤¶ñÂÎŪ¤Ê¥¤¥Ù¥ó¥È¥¯¥é¥¹¤òºîÀ®¤·¡¢É¬Íפʿ¶¤ëÉñ¤¤¤ò¼ÂÁõ¤¹¤ë¤À¤±¤ÇºÑ¤ß¤Þ¤¹¡£
´û¸¤Î¥³¡¼¥É¤òÊѹ¹¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£¤³¤ì¤Ë¤è¤ê¡¢¥²¡¼¥à¤ÎÍ×ÁǤò¸úΨŪ¤Ë³ÈÄ¥¤Ç¤­¤Þ¤¹¡£

¡¡¤Þ¤¿¡¢await eventButton.ExecuteEvent(); ¤ÎÉôʬ¤Ç¤Ï¡¢¸½ºßɽ¼¨¤µ¤ì¤Æ¤¤¤ë¥¤¥Ù¥ó¥È¥Ü¥¿¥ó¤Î¼ïÎà¤Ë±þ¤¸¤Æ¡¢
Âбþ¤¹¤ë¶ñÂÎŪ¤Ê¥¤¥Ù¥ó¥È¥¯¥é¥¹¤Î ExecuteEvent ¥á¥½¥Ã¥É¤¬¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£½¾¤Ã¤Æ¡¢°Û¤Ê¤ë¥¤¥Ù¥ó¥È¤¬°Û¤Ê¤ëÊýË¡¤Ç½èÍý¤µ¤ì¤ë¤¿¤á¡¢½ÀÆðÀ­¤¬¸þ¾å¤·¤Þ¤¹¡£

¡¡¤³¤Î¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ë¤è¤ê¡¢¿·¤·¤¤¥¤¥Ù¥ó¥È¤òÄɲä·¡¢´û¸¤Î¥¤¥Ù¥ó¥È¤òÊѹ¹¤¹¤ë¤¿¤á¤Ë¡¢¥³¡¼¥ÉÁ´ÂΤòÂçÉý¤ËÊѹ¹¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤»¤ó¡£
¤½¤Î¤¿¤á¡¢¥²¡¼¥à¤Î³«È¯¤ÈÊݼ餬´Êñ¤Ë¤Ê¤ê¡¢°Û¤Ê¤ë¼ïÎà¤Î¥¤¥Ù¥ó¥È¤ò¸úΨŪ¤Ë¥µ¥Ý¡¼¥È¤Ç¤­¤Þ¤¹¡£



¡¡°Ê¾å¤ÎÆâÍƤˤè¤ê¡¢Unity¤Ç¥ë¡¼¥ÈÁªÂò·¿¥²¡¼¥à¤òÀ©¸æ¤¹¤ë¤¿¤á¤Î¥á¥¤¥ó¤Î¥í¥¸¥Ã¥¯¤¬Ä󶡤µ¤ì¤Þ¤¹¡£
¡¡

MainGameManager ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¡¢MainGameManager ¥¹¥¯¥ê¥×¥È¤ò¥¢¥¿¥Ã¥Á¤·¤ÆÀßÄê¤ò¹Ô¤¦


¡¡¥Ò¥¨¥é¥ë¥­¡¼¤Î¶õ¤¤¤Æ¤¤¤ë¾ì½ê¤Ç±¦¥¯¥ê¥Ã¥¯¤ò¤·¤Æ¥á¥Ë¥å¡¼¤ò³«¤­¡¢Create Empty ¤ò¹Ô¤Ã¤Æ¿·¤·¤¤¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤Þ¤¹¡£
̾Á°¤ò MainGameManager ¤ËÊѹ¹¤·¡¢Àè¤Û¤ÉºîÀ®¤·¤¿ MainGameManager ¥¹¥¯¥ê¥×¥È¤ò¥¢¥¿¥Ã¥Á¤·¤Þ¤¹¡£

¡¡¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤ò³Îǧ¤·¡¢³ÆÊÑ¿ô¤ËɬÍפʾðÊó¤ò¥¢¥µ¥¤¥ó¤·¤Æ¤¯¤À¤µ¤¤¡£


¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü



¡¡°Ê¾å¤Ç´°Î»¤Ç¤¹¡£



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


¡¡RouteCollection ¤ËÅÐÏ¿¤·¤¿¥¤¥Ù¥ó¥È¤ÎÆâÍƤǥ롼¥È¾ðÊó¤¬À¸À®¤µ¤ì¤ë¤«³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£





¡¡¤Þ¤¿ºÇ½é¤ËÀ¸À®¤µ¤ì¤ë¥¤¥Ù¥ó¥È¤Î¥Ü¥¿¥ó¤â¡¢RouteCollection ¤ËÅÐÏ¿¤·¤¿¥¤¥Ù¥ó¥È¤ÎÆâÍƤˤʤäƤ¤¤ë¤«¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£





¡¡¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ËÅÐÏ¿¤·¤¿¾ðÊóÄ̤êÀµ¤·¤¯½èÍý¤¬Æ°¤¤¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢¼¡¤Î³Îǧ¤ò¹Ô¤¤¤Þ¤¹¡£



¡¡¥¤¥Ù¥ó¥È¤Î¥Ü¥¿¥ó¤ò²¡¤·¡¢Console ¥Ó¥å¡¼¤Ë¥í¥°¤¬É½¼¨¤µ¤ì¤ë¤«³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£
¤½¤Î¸å¡¢¼¡¤Î¥¤¥Ù¥ó¥È¤Îʬ´ô¥Ü¥¿¥ó¤¬ºîÀ®¤µ¤ì¤ë¤«¡¢¤½¤ì¤é¤â²¡¤¹¤³¤È¤Çʬ´ô¤·¤Ê¤¬¤é½èÍý¤¬¿Ê¤ó¤Ç¤¤¤¯¤³¤È¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£

¡¡°ì½ï¤Ë¥×¥ì¥¤¥ä¡¼¤Î¥¢¥¤¥³¥ó¤¬°ÜÆ°¤·¡¢Ê¬´ô¤ÇÁªÂò¤·¤¿¥Þ¥¹¤Î¿§¤âÊѤï¤ê¤Þ¤¹¡£


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



¡¡ºÇ¸å¤Î¥¤¥Ù¥ó¥È¤¬½ªÎ»¤·¤¿¤é¡¢¥¤¥Ù¥ó¥È½ªÎ»¤Î¥í¥°¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£
¤³¤Á¤é¤â¹ç¤ï¤»¤Æ³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£






¡¡¤¹¤Ù¤ÆÌäÂê¤Ê¤¯Æ°ºî¤·¤¿¤é¡¢¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ËÅÐÏ¿¤¹¤ë¥¤¥Ù¥ó¥È¤Î¾ðÊó¤òÊѹ¹¤·¤¿¤ê¡¢¥ë¡¼¥È¿ô¤òÁý¤ä¤·¤Æ
Ʊ¤¸¤è¤¦¤ËÆ°ºî¤¹¤ë¤«¤ò³Îǧ¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£










¡¡¤³¤Î½èÍý¤Ë¤è¤ê¡¢¥²¡¼¥à¤Î´ðËÜŪ¤Ê¥µ¥¤¥¯¥ë¤¬´°À®¤·¡¢¤½¤Î¸å¤Ï¡¢MainGameManager ¤Î¥½¡¼¥¹¥³¡¼¥É¤Î½¤Àµ¤ÏÉÔÍפǡ¢¥ë¡¼¥È¤ÎÊѹ¹¡¦Äɲ䬹Ԥ¨¤Þ¤¹¡£

¡¡½èÍý¤òÃê¾Ý²½¤·¡¢¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Ê¤É¤ò³èÍѤ¹¤ë¤³¤È¤Ç¡¢¥²¡¼¥à¥í¥¸¥Ã¥¯¤òºî¤ê½Ð¤¹¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

¥³¥á¥ó¥È¤ò¤«¤¯


¡Öhttp://¡×¤ò´Þ¤àÅê¹Æ¤Ï¶Ø»ß¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ÍøÍѵ¬Ìó¤ò¤´³Îǧ¤Î¤¦¤¨¤´µ­Æþ²¼¤µ¤¤

Menu



´ðÁÃ

µ»½Ñ/Ãμ±(¼ÂÁõÎã)

3D¥¢¥¯¥·¥ç¥ó¥²¡¼¥à

2D¤ª¤Ï¤¸¤­¥²¡¼¥à(ȯŸÊÔ)

2D¶¯À©²£¥¹¥¯¥í¡¼¥ë¥¢¥¯¥·¥ç¥ó(ȯŸÊÔ)

2D¥¿¥Ã¥×¥·¥å¡¼¥Æ¥£¥ó¥°(³ÈÄ¥ÊÔ)

¥ì¡¼¥¹¥²¡¼¥à(È´¿è)

2DÊüÃÖ¥²¡¼¥à(ȯŸÊÔ)

3D¥ì¡¼¥ë¥¬¥ó¥·¥å¡¼¥Æ¥£¥ó¥°(±þÍÑÊÔ)

3Dæ½Ð¥²¡¼¥à(È´¿è)

2D¥ê¥¢¥ë¥¿¥¤¥à¥¹¥È¥é¥Æ¥¸¡¼

3D¥¿¥Ã¥×¥¢¥¯¥·¥ç¥ó(NavMeshAgent »ÈÍÑ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥«¥¨¥ë¤Î°Ù¤Ë¡Á¡¢¥Ü¥³¥¹¥«¥¦¥©¡¼¥ºÉ÷)

VideoPlayer ¥¤¥Ù¥ó¥ÈϢư¤Î¼ÂÁõÎã

VideoPlayer ¥ê¥¹¥ÈÆ⤫¤é¥à¡¼¥Ó¡¼ºÆÀ¸¤Î¼ÂÁõÎã(ȯŸ)

AR ²èÁüÉÕ¤­¥ª¥Ö¥¸¥§¥¯¥ÈÀ¸À®¤Î¼ÂÁõÎã

AR ¥ê¥¹¥ÈÆ⤫¤éÀ¸À®¤Î¼ÂÁõÎã(ȯŸ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥µ¥Ð¥¤¥Ð¡¼É÷)

private



¤³¤Î¥µ¥¤¥ÈÆâ¤ÎºîÉʤϥæ¥Ë¥Æ¥£¤Á¤ã¤ó¥é¥¤¥»¥ó¥¹¾ò¹à¤Î¸µ¤ËÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£

´ÉÍý¿Í/Éû´ÉÍý¿Í¤Î¤ßÊÔ½¸¤Ç¤­¤Þ¤¹