private void DoColorMenu(int winID)
        {
            float margin = FixPx(marginPx);
            float fontSize = FixPx(fontPx);
            float itemHeight = FixPx(itemHeightPx);

            Rect scrollRect = new Rect(margin, (itemHeight + margin) * 2, winRect.width - margin * 3, winRect.height - (itemHeight + margin) * 4);
            Rect conRect = new Rect(0, 0, scrollRect.width - 20, 0);
            Rect outRect = new Rect(margin, 0, winRect.width - margin * 2, itemHeight);
            GUIStyle lStyle = "label";
            GUIStyle bStyle = "button";
            GUIStyle tStyle = "toggle";

            Color color = new Color(1f, 1f, 1f, 0.98f);
            lStyle.fontSize = FixPx(fontPx);
            lStyle.normal.textColor = color;
            bStyle.fontSize = FixPx(fontPx);
            bStyle.normal.textColor = color;
            tStyle.fontSize = FixPx(fontPx);
            tStyle.normal.textColor = color;

            GUI.Label(outRect, "強制カラーチェンジ:" + currentSlotname, lStyle);
            outRect.y += itemHeight + margin;
            List<Material> materialList = GetMaterials(currentSlotname);
            if (GUI.Button(outRect, "テクスチャ変更", bStyle))
            {
                textureFile = new Dictionary<int, Dictionary<string, string>>();
                for (int i = 0; i < materialList.Count(); i++)
                {
                    textureFile.Add(i, new Dictionary<string, string>());
                    foreach (string propName in propNames)
                    {
                        textureFile[i].Add(propName, "");
                    }
                }
                menuType = MenuType.Texture;
            }

            outRect.y = 0;
            outRect.width -= margin * 2 + 20;
            if (materialList != null)
            {
                conRect.height += (itemHeight + margin) * materialList.Count * 31 + margin;

                scrollViewVector = GUI.BeginScrollView(scrollRect, scrollViewVector, conRect);

                for (int i = 0; i < materialList.Count(); i++)
                {
                    Material material = materialList[i];
                    outRect.x = margin;
                    GUI.Label(outRect, material.name, lStyle);
                    outRect.x += margin;
                    outRect.width = conRect.width - margin * 3;
                    outRect.y += itemHeight + margin;
                    int renderQueue = material.renderQueue;
                    renderQueue = (int)drawModValueSlider(outRect, renderQueue, 0, 5000, String.Format("{0}:{1}", "RQ", material.renderQueue), lStyle);
                    material.SetFloat("_SetManualRenderQueue", renderQueue);
                    material.renderQueue = renderQueue;
                    outRect.y += itemHeight + margin;
                    GUI.Label(outRect, "Color", lStyle);
                    outRect.y += itemHeight + margin;
                    Color sColor = material.GetColor("_Color");
                    sColor.r = drawModValueSlider(outRect, sColor.r, 0f, 2f, String.Format("{0}:{1:F2}", "R", sColor.r), lStyle);
                    outRect.y += itemHeight + margin;
                    sColor.g = drawModValueSlider(outRect, sColor.g, 0f, 2f, String.Format("{0}:{1:F2}", "G", sColor.g), lStyle);
                    outRect.y += itemHeight + margin;
                    sColor.b = drawModValueSlider(outRect, sColor.b, 0f, 2f, String.Format("{0}:{1:F2}", "B", sColor.b), lStyle);
                    outRect.y += itemHeight + margin;
                    sColor.a = drawModValueSlider(outRect, sColor.a, 0f, 1f, String.Format("{0}:{1:F2}", "A", sColor.a), lStyle);
                    outRect.y += itemHeight + margin;

                    Color shadowColor = material.GetColor("_ShadowColor");
                    if (shadowColor != null)
                    {
                        GUI.Label(outRect, "Shadow Color", lStyle);
                        outRect.y += itemHeight + margin;
                        shadowColor.r = drawModValueSlider(outRect, shadowColor.r, 0f, 2f, String.Format("{0}:{1:F2}", "R", shadowColor.r), lStyle);
                        outRect.y += itemHeight + margin;
                        shadowColor.g = drawModValueSlider(outRect, shadowColor.g, 0f, 2f, String.Format("{0}:{1:F2}", "G", shadowColor.g), lStyle);
                        outRect.y += itemHeight + margin;
                        shadowColor.b = drawModValueSlider(outRect, shadowColor.b, 0f, 2f, String.Format("{0}:{1:F2}", "B", shadowColor.b), lStyle);
                        outRect.y += itemHeight + margin;
                        shadowColor.a = drawModValueSlider(outRect, shadowColor.a, 0f, 1f, String.Format("{0}:{1:F2}", "A", shadowColor.a), lStyle);
                        outRect.y += itemHeight + margin;
                    }
                    Color outlineColor = material.GetColor("_OutlineColor");
                    if (outlineColor != null)
                    {
                        GUI.Label(outRect, "Outline Color", lStyle);
                        outRect.y += itemHeight + margin;
                        outlineColor.r = drawModValueSlider(outRect, outlineColor.r, 0f, 2f, String.Format("{0}:{1:F2}", "R", outlineColor.r), lStyle);
                        outRect.y += itemHeight + margin;
                        outlineColor.g = drawModValueSlider(outRect, outlineColor.g, 0f, 2f, String.Format("{0}:{1:F2}", "G", outlineColor.g), lStyle);
                        outRect.y += itemHeight + margin;
                        outlineColor.b = drawModValueSlider(outRect, outlineColor.b, 0f, 2f, String.Format("{0}:{1:F2}", "B", outlineColor.b), lStyle);
                        outRect.y += itemHeight + margin;
                        outlineColor.a = drawModValueSlider(outRect, outlineColor.a, 0f, 1f, String.Format("{0}:{1:F2}", "A", outlineColor.a), lStyle);
                        outRect.y += itemHeight + margin;
                    }
                    Color rimColor = material.GetColor("_RimColor");
                    if (rimColor != null)
                    {
                        GUI.Label(outRect, "Rim Color", lStyle);
                        outRect.y += itemHeight + margin;
                        rimColor.r = drawModValueSlider(outRect, rimColor.r, 0f, 2f, String.Format("{0}:{1:F2}", "R", rimColor.r), lStyle);
                        outRect.y += itemHeight + margin;
                        rimColor.g = drawModValueSlider(outRect, rimColor.g, 0f, 2f, String.Format("{0}:{1:F2}", "G", rimColor.g), lStyle);
                        outRect.y += itemHeight + margin;
                        rimColor.b = drawModValueSlider(outRect, rimColor.b, 0f, 2f, String.Format("{0}:{1:F2}", "B", rimColor.b), lStyle);
                        outRect.y += itemHeight + margin;
                        rimColor.a = drawModValueSlider(outRect, rimColor.a, 0f, 1f, String.Format("{0}:{1:F2}", "A", rimColor.a), lStyle);
                        outRect.y += itemHeight + margin;
                    }
                    float? shininess = material.GetFloat("_Shininess");
                    if (shininess != null)
                    {
                        GUI.Label(outRect, "Shininess", lStyle);
                        outRect.y += itemHeight + margin;
                        shininess = drawModValueSlider(outRect, (float)shininess, 0f, 10f, String.Format("  {0:F2}", (float)shininess), lStyle);
                        outRect.y += itemHeight + margin;
                    }
                    float? outlineWidth = material.GetFloat("_OutlineWidth");
                    if (outlineWidth != null)
                    {
                        GUI.Label(outRect, "OutlineWidth", lStyle);
                        outRect.y += itemHeight + margin;
                        outlineWidth = drawModValueSlider(outRect, (float)outlineWidth, 0f, 0.1f, String.Format("  {0:F5}", (float)outlineWidth), lStyle);
                        outRect.y += itemHeight + margin;
                    }
                    float? rimPower = material.GetFloat("_RimPower");
                    if (rimPower != null)
                    {
                        GUI.Label(outRect, "RimPower", lStyle);
                        outRect.y += itemHeight + margin;
                        rimPower = drawModValueSlider(outRect, (float)rimPower, 0f, 100f, String.Format("  {0:F2}", (float)rimPower), lStyle);
                        outRect.y += itemHeight + margin;
                    }
                    float? rimShift = material.GetFloat("_RimShift");
                    if (rimShift != null)
                    {
                        GUI.Label(outRect, "RimShift", lStyle);
                        outRect.y += itemHeight + margin;
                        rimShift = drawModValueSlider(outRect, (float)rimShift, 0f, 5f, String.Format("  {0:F2}", (float)rimShift), lStyle);
                        outRect.y += itemHeight + margin;
                    }


                    string sharderName = material.shader.name;
                    try
                    {
                        Shader mShader = material.shader;
                        if (!InitialShaders.ContainsKey(material.name))
                        {
                            if (mShader.name == "Hidden/InternalErrorShader")
                            {
                                InitialShaders.Add(material.name, null);
                            }
                            else
                            {
                                InitialShaders.Add(material.name, mShader);
                            }
                        }
                        if (sColor.a < 1f)
                        {
                            if (sharderName.Contains("Outline"))
                            {
                                Shader shader = Shader.Find(sharderName.Replace("Outline", "Trans"));
                                if (shader == null)
                                {
                                    shader = Shader.Find("CM3D2/Toony_Lighted_Trans");
                                }
                                material.shader = shader;
                            }
                        }
                        else
                        {
                            material.shader = InitialShaders[material.name];
                        }
                    }
                    catch (Exception e)
                    {
                        DebugLog(e.StackTrace);
                    }
                    material.SetColor("_Color", sColor);
                    if (shadowColor != null)
                        material.SetColor("_ShadowColor", shadowColor);
                    if (outlineColor != null)
                        material.SetColor("_OutlineColor", outlineColor);
                    if (rimColor != null)
                        material.SetColor("_RimColor", rimColor);
                    if (shininess != null)
                        material.SetFloat("_Shininess", (float)shininess);
                    if (outlineWidth != null)
                        material.SetFloat("_OutlineWidth", (float)outlineWidth);
                    if (rimPower != null)
                        material.SetFloat("_RimPower", (float)rimPower);
                    if (rimShift != null)
                        material.SetFloat("_RimShift", (float)rimShift);

                    outRect.y += margin * 3;
                }

                GUI.EndScrollView();
            }

            outRect.x = margin;
            outRect.y = winRect.height - (itemHeight + margin) * 2;
            outRect.width = winRect.width - margin * 2;
            if (GUI.Button(outRect, "menu/mate保存", bStyle))
            {
                TBody body = maid.body0;
                List<TBodySkin> goSlot = body.goSlot;
                int index = (int)global::TBody.hashSlotName[Slotnames[currentSlotname]];
                global::TBodySkin tBodySkin = goSlot[index];
                GameObject obj = tBodySkin.obj;
                if (obj == null)
                {
                    return;
                }
                MaidProp prop = maid.GetProp(Slotnames[currentSlotname].ToLower());
                if (prop != null)
                {
                    targetMenuInfo = new MenuInfo();
                    if (targetMenuInfo.LoadMenufile(prop.strFileName))
                    {
                        showSaveDialog = true;
                    }
                }
            }
            outRect.y += itemHeight + margin;
            if (GUI.Button(outRect, "閉じる", bStyle))
            {
                menuType = MenuType.Main;
            }
            GUI.DragWindow();
        }