public UserConfig()
        {
            for (int i = 0; i < cfgs_p.Length; i++)
            {
                cfgs_p[i] = new UserConfigPage();
            }

            for (int i = 0; i < cfgs_ms.Length; i++)
            {
                cfgs_ms[i] = new XtMasterSlave.MsLinkConfig();
            }
        }
        static void procUserCfg(XtMasterSlave.MsLinks[] p_MSlinks, XtMasterSlave.MsLinkConfig[] cfgs, XtMasterSlave.v3Offsets[] v3ofs)
        {
            for (int i = 0; i < XtMasterSlave.MAX_PAGENUM; i++)
            {
                var ms = p_MSlinks[i];

                //v0031 fix
                ms.mdMaster_No = -1;
                ms.FixMaster();
                ms.mdSlave_No = -1;
                ms.FixSlave();

                cfgs[i] = _UserCfg.cfgs_ms[i];

                UserConfigPage cfgp = _UserCfg.cfgs_p[i];
                ms.Scc1_MasterMaid = cfgp.isMasterMaid;
                ms.mdMaster_No     = cfgp.Master_ID;
                ms.mdSlave_No      = cfgp.Slave_ID;

                if (!ms.Scc1_MasterMaid)
                {
                    ms.mdMasters = XtMasterSlave._MensList;
                    ms.mdSlaves  = XtMasterSlave._MaidList;
                }
                else
                {
                    ms.mdSlaves  = XtMasterSlave._MensList;
                    ms.mdMasters = XtMasterSlave._MaidList;
                }

                //名前指定&呼び出し
                if (XtMasterSlave.cfg.boNameSelectAndLoad)
                {
                    //master
                    int num = -1;
                    if (!string.IsNullOrEmpty(cfgp.Master_Name))
                    {
                        if (!ms.Scc1_MasterMaid)
                        {
                            num = XtMasterSlave.SelectOrLoadMan(cfgp.Master_Name);
                            if (num >= 0)
                            {
                                ms.mdMasters = XtMasterSlave._MensList; //リストが更新された可能性ある
                            }
                        }
                        else
                        {
                            num = XtMasterSlave.SelectOrLoadMaid(cfgp.Master_Name);
                            if (num >= 0)
                            {
                                ms.mdMasters = XtMasterSlave._MaidList;
                            }
                        }

                        if (num >= 0)
                        {
                            ms.mdMaster_No = num;

                            //公式撮影の非表示解除
                            if (ms.mdMasters[ms.mdMaster_No].mem.gameObject.transform.GetChild(0).localScale == Vector3.zero)
                            {
                                ms.mdMasters[ms.mdMaster_No].mem.gameObject.transform.GetChild(0).localScale = Vector3.one;
                            }
                        }
                        else
                        {
                            Console.WriteLine("指定キャラクターが見つかりません。" + (cfgp.doMasterSlave ? "リンク中止:" : ":") + cfgp.Master_Name);
                            cfgp.doMasterSlave = false;
                        }
                    }

                    //slave
                    num = -1;
                    if (!string.IsNullOrEmpty(cfgp.Slave_Name))
                    {
                        if (!ms.Scc1_MasterMaid)
                        {
                            num = XtMasterSlave.SelectOrLoadMaid(cfgp.Slave_Name);
                            if (num >= 0)
                            {
                                ms.mdSlaves = XtMasterSlave._MaidList; //リストが更新された可能性ある
                            }
                        }
                        else
                        {
                            num = XtMasterSlave.SelectOrLoadMan(cfgp.Slave_Name);
                            if (num >= 0)
                            {
                                ms.mdSlaves = XtMasterSlave._MensList;
                            }
                        }

                        if (num >= 0)
                        {
                            ms.mdSlave_No = num;

                            //公式撮影の非表示解除
                            if (ms.mdSlaves[ms.mdSlave_No].mem.gameObject.transform.GetChild(0).localScale == Vector3.zero)
                            {
                                ms.mdSlaves[ms.mdSlave_No].mem.gameObject.transform.GetChild(0).localScale = Vector3.one;
                            }
                        }
                        else
                        {
                            Console.WriteLine("指定キャラクターが見つかりません。" + (cfgp.doMasterSlave ? "リンク中止:" : ":") + cfgp.Slave_Name);
                            cfgp.doMasterSlave = false;
                        }
                    }
                }

                ms.doMasterSlave       = false;
                ms.maidKeepSlaveYotogi = null;

                if (ms.mdMasters.Count > ms.mdMaster_No && ms.mdMaster_No >= 0)
                {
                    Maid master = ms.mdMasters[ms.mdMaster_No].mem;

                    if (ms.mdSlaves.Count > ms.mdSlave_No && ms.mdSlave_No >= 0)
                    {
                        Maid slave = ms.mdSlaves[ms.mdSlave_No].mem;
                        Maid maid0 = null;
                        if (!slave.boMAN && ms.mdSlave_No > 0 && ms.mdSlaves[0].mem)
                        {
                            maid0 = ms.mdSlaves[0].mem;
                        }

                        //設定の反映
                        debugPrintConsole(i + ":設定の反映");
                        cfgp.ProcParam(master, slave, maid0, cfgs[i]);

                        //リンク開始
                        if (master && slave && master.body0 && slave.body0)
                        {
                            ms.doMasterSlave = cfgp.doMasterSlave;

                            //キープスレイブ反映
                            if (cfgs[i].doKeepSlaveYotogi && !slave.boMAN && XtMasterSlave.IsKeepScene())
                            {
                                ms.maidKeepSlaveYotogi = slave;
                            }

                            //v0031 fix
                            ms.FixMaster();
                            ms.FixSlave();
                        }
                    }
                }
                else
                {
                    if (ms.mdSlaves.Count > ms.mdSlave_No && ms.mdSlave_No >= 0)
                    {
                        // メイドのみでも設定反映 v0025
                        Maid slave = ms.mdSlaves[ms.mdSlave_No].mem;
                        Maid maid0 = null;
                        if (!slave.boMAN && ms.mdSlave_No > 0 && ms.mdSlaves[0].mem)
                        {
                            maid0 = ms.mdSlaves[0].mem;
                        }

                        //設定の反映
                        debugPrintConsole(i + ":設定の反映m/o");
                        cfgp.ProcParam(null, slave, maid0, cfgs[i]);

                        //v0031 fix
                        ms.mdMaster_No = -1;
                        ms.FixMaster();
                        ms.FixSlave();
                    }
                }

                if (ms.mdSlaves.Count > ms.mdSlave_No && ms.mdSlave_No >= 0)
                {
                    Maid slave = ms.mdSlaves[ms.mdSlave_No].mem;
                    cfgp.ProcParam2(slave, ms);
                }
            }

            //オフセットテーブルの更新
            for (int i = 0; i < cfgs.Length; i++)
            {
                XtMasterSlave.IniCfgsTov3Offsets(ref v3ofs[i], cfgs[i]);
            }
        }