public DestConfig GetDestConfig(DestSelector ucDestOptions)
        {
            DestConfig DestConfig = new UploadersLib.DestConfig();

            Adapter.SaveMenuConfigToList <OutputEnum>(ucDestOptions.tsddbOutputs, DestConfig.Outputs);
            Adapter.SaveMenuConfigToList <ClipboardContentEnum>(ucDestOptions.tsddbClipboardContent, DestConfig.TaskClipboardContent);
            Adapter.SaveMenuConfigToList <LinkFormatEnum>(ucDestOptions.tsddbLinkFormat, DestConfig.LinkFormat);
            Adapter.SaveMenuConfigToList <ImageDestination>(ucDestOptions.tsddbDestImage, DestConfig.ImageUploaders);
            Adapter.SaveMenuConfigToList <TextDestination>(ucDestOptions.tsddbDestText, DestConfig.TextUploaders);
            Adapter.SaveMenuConfigToList <FileDestination>(ucDestOptions.tsddbDestFile, DestConfig.FileUploaders);
            Adapter.SaveMenuConfigToList <UrlShortenerType>(ucDestOptions.tsddbDestLink, DestConfig.LinkUploaders);

            return(DestConfig);
        }
    private IEnumerator SelectDest(Player player, int dicenum)
    {
        TreeNode <Square> root = new TreeNode <Square>(player.Pos);
        // destOptionsは「到着先のマスを指す木の葉ノード」のリスト
        List <TreeNode <Square> > destOptions = new List <TreeNode <Square> >();

        // 多分木をつくる
        GenerateDestTree(destOptions, root, dicenum);

        // ここでdestOptionsからプレイヤーに行き先を選ばせる
        DestSelectEvent   OnDestSelected = new DestSelectEvent();
        TreeNode <Square> nodeptr        = null;
        bool selected = false;

        OnDestSelected.AddListener((TreeNode <Square> dest) => {
            nodeptr  = dest;
            selected = true;
        });

        // DestSelectorを生成
        List <DestSelector> destSelectors = new List <DestSelector>();

        foreach (TreeNode <Square> dest in destOptions)
        {
            DestSelector temp = (DestSelector)Instantiate(destSelectorPrefab);
            temp.transform.position = dest.value.transform.position;
            temp.transform.Translate(0, 0, -1f);
            temp.dest           = dest;
            temp.OnDestSelected = OnDestSelected;
            destSelectors.Add(temp);
        }
        while (!selected)
        {
            yield return(null);
        }
        foreach (DestSelector ds in destSelectors)
        {
            Destroy(ds.gameObject);
        }

        // 木を逆に辿りながらstackにpushしていくことで進む道順を作成する
        Stack <Square> directions = new Stack <Square>();

        while (nodeptr.Parent != null)
        {
            directions.Push(nodeptr.value);
            nodeptr = nodeptr.Parent;
        }
        yield return(directions);
    }