public void GuiFunc(int winId)
            {
                int  iFontSize = gsLabel.fontSize;
                Rect rectItem  = new Rect(iFontSize * 0.5f, iFontSize * 0.5f, iFontSize, rect.width - iFontSize * 3);

                float fTmp;

                fTmp = GUI.VerticalSlider(rectItem, fCurve[1], 1f, 0f);
                if (fTmp != fCurve[1])
                {
                    fCurve[1]  = fTmp;
                    sValues[1] = fTmp.ToString();
                }

                rectItem.x = rect.width - rectItem.width - iFontSize * 0.5f;
                fTmp       = GUI.VerticalSlider(rectItem, fCurve[3], 1f, 0f);
                if (fTmp != fCurve[3])
                {
                    fCurve[3]  = fTmp;
                    sValues[3] = fTmp.ToString();
                }

                rectItem.x     = rectItem.width + iFontSize * 0.5f;
                rectItem.width = rectItem.height;
                GUI.DrawTexture(rectItem, texture);

                rectItem.x      = iFontSize * 0.5f;
                rectItem.width  = (rect.width - iFontSize) / 2f;
                rectItem.y     += rectItem.height;
                rectItem.height = iFontSize * 1.5f;
                string sTmp = Util.DrawTextFieldF(rectItem, sValues[1], gsText);

                if (sTmp != sValues[1])
                {
                    if (float.TryParse(sTmp, out fTmp))
                    {
                        fCurve[1] = Mathf.Clamp01(fTmp);
                        sTmp      = fCurve[1].ToString();
                    }
                    sValues[1] = sTmp;
                }

                rectItem.x += rectItem.width;
                sTmp        = Util.DrawTextFieldF(rectItem, sValues[3], gsText);
                if (sTmp != sValues[3])
                {
                    if (float.TryParse(sTmp, out fTmp))
                    {
                        fCurve[3] = Mathf.Clamp01(fTmp);
                        sTmp      = fCurve[3].ToString();
                    }

                    sValues[3] = sTmp;
                }

                //

                rectItem.x     = iFontSize * 0.5f;
                rectItem.width = iFontSize * 4;
                rectItem.y    += rectItem.height + fMargin;
                GUI.Label(rectItem, "Start", gsLabel);

                rectItem.width = rect.width - rectItem.width - iFontSize;
                rectItem.x     = rect.width - rectItem.width - iFontSize * 0.5f;
                sTmp           = Util.DrawTextFieldF(rectItem, sValues[0], gsText);

                if (sTmp != sValues[0])
                {
                    if (float.TryParse(sTmp, out fTmp))
                    {
                        fCurve[0] = fTmp;
                    }

                    sValues[0] = sTmp;
                }

                float fMax = narrowSlider ? 1f : 10f;

                rectItem.x     = iFontSize * 0.5f;
                rectItem.width = rect.width - iFontSize * 3;
                rectItem.y    += rectItem.height;
                fTmp           = GUI.HorizontalSlider(rectItem, fCurve[0], -fMax, fMax);
                if (fTmp != fCurve[0])
                {
                    fCurve[0]  = fTmp;
                    sValues[0] = fTmp.ToString();
                }

                rectItem.x    += rectItem.width;
                rectItem.width = iFontSize * 2;
                if (GUI.Button(rectItem, ConstantValues.GUIBUTTON_DEF, gsButton))
                {
                    fCurve[0]  = 1f;
                    sValues[0] = fCurve[0].ToString();
                }


                rectItem.x     = iFontSize * 0.5f;
                rectItem.width = iFontSize * 4;
                rectItem.y    += rectItem.height + fMargin;
                GUI.Label(rectItem, "End", gsLabel);

                rectItem.width = rect.width - rectItem.width - iFontSize;
                rectItem.x     = rect.width - rectItem.width - iFontSize * 0.5f;
                sTmp           = Util.DrawTextFieldF(rectItem, sValues[2], gsText);
                if (sTmp != sValues[2])
                {
                    if (float.TryParse(sTmp, out fTmp))
                    {
                        fCurve[2] = fTmp;
                    }

                    sValues[2] = sTmp;
                }

                rectItem.x     = iFontSize * 0.5f;
                rectItem.width = rect.width - iFontSize * 3;
                rectItem.y    += rectItem.height;
                fTmp           = GUI.HorizontalSlider(rectItem, fCurve[2], -fMax, fMax);
                if (fTmp != fCurve[2])
                {
                    fCurve[2]  = fTmp;
                    sValues[2] = fTmp.ToString();
                }

                rectItem.x    += rectItem.width;
                rectItem.width = iFontSize * 2;
                if (GUI.Button(rectItem, ConstantValues.GUIBUTTON_DEF, gsButton))
                {
                    fCurve[2]  = 1f;
                    sValues[2] = fCurve[2].ToString();
                }


                rectItem.width = iFontSize * 5f;
                rectItem.x     = iFontSize * 0.5f;
                rectItem.y    += rectItem.height + fMargin;
                if (GUI.Button(rectItem, isGuiTranslation ? (narrowSlider ? "幅を広く" : "幅を狭く") : (narrowSlider ? "Broad" : "Narrow"), gsButton))
                {
                    narrowSlider = !narrowSlider;
                }


                rectItem.x = rect.width - iFontSize * 5.5f;
                if (GUI.Button(rectItem, isGuiTranslation ? "全値反転" : "Reverse", gsButton))
                {
                    fCurve[1]  = 1f - fCurve[1];
                    sValues[1] = fCurve[1].ToString();

                    fCurve[3]  = 1f - fCurve[3];
                    sValues[3] = fCurve[3].ToString();

                    fCurve[0] *= -1;
                    sValues[0] = fCurve[0].ToString();

                    fCurve[2] *= -1;
                    sValues[2] = fCurve[2].ToString();
                }


                float fHeight = rectItem.y + rectItem.height + fMargin;

                if (rect.height != fHeight)
                {
                    Rect rectTmp = new Rect(rect.x, rect.y - fHeight, rect.width, fHeight);
                    rect = rectTmp;
                }
                else if (rect.x < 0f)
                {
                    Rect rectTmp = new Rect(fRightPos, rect.y, rect.width, rect.height);
                    rect = rectTmp;
                }
                else if (rect.y < 0f)
                {
                    Rect rectTmp = new Rect(rect.x, fUpPos, rect.width, rect.height);
                    rect = rectTmp;
                }

                if (GUI.changed)
                {
                    CreateCurve();
                    func(curve);
                }

                GUI.DragWindow();

                if (GetAnyMouseButtonDown())
                {
                    Vector2 v2Tmp = new Vector2(Input.mousePosition.x, Screen.height - Input.mousePosition.y);
                    if (!rect.Contains(v2Tmp))
                    {
                        func(curve);
                        show = false;
                    }
                }
            }