확장된 화면, 골목 메뉴를 편집하는 방법

8612 단어 Unity 확장Unity

코드 사용 시 고려 사항


코드 사용으로 인한 손실은 책임을 지지 않습니다.
또한 코드를 사용할 때 사용하십시오.
참고하거나 사용할 때 댓글에 남길 수 있다면 열의가 클 거예요.

그런 일 없어요?


여느 때처럼 편집 소재 저장 버튼을 사용할 수 있었으면 좋겠는데...
맞아요. 파란색 W 소프트웨어, 녹색 X 등 다른 소프트웨어처럼 화면 위쪽을 편집해요.
메뉴판 같은 게 있었으면 길을 잃지 않았을 텐데..
예?그거 괜찮은데?이렇게 되면
이하
sample.cs
public class EditorSamapleMain : EditorWindow
{
    [MenuItem("Tools/SampleMenu")]
    static public void open_tool()
    {
        GetWindow<EditorSamapleMain>();
    }

    /// <summary>
    /// 描画部分
    /// </summary>
    private void OnGUI()
    {
        Rect _rect = EditorGUILayout.BeginHorizontal();
        {
            if(GUILayout.Button("File", EditorStyles.toolbarButton, GUILayout.Width(100.0f)))
            {
                Rect _main_rect = this.position;
                _main_rect.size = new Vector2(_rect.width, _rect.height);
                EditorSampleSub.file_menu_open(_main_rect);
            }
        }
        EditorGUILayout.EndHorizontal();
    }

}

public class EditorSampleSub : EditorWindow
{
    static public void file_menu_open(Rect _main_window)
    {
        var _window = CreateInstance<EditorSampleSub>();

        _window.position = new Rect(_main_window.x -100, _main_window.y + _main_window.size.y,200,200);

        _window.ShowPopup();
        _window.Focus();
    }

    private bool close;

    private EditorSampleSub()
    {
        close = false;
    }

    private void OnGUI()
    {
        EditorGUILayout.BeginVertical(GUI.skin.box, GUILayout.ExpandWidth(true));
        if(GUILayout.Button("緊急終了",EditorStyles.toolbarButton))
        {
            this.Close();
        }
        EditorGUILayout.EndVertical();
    }


    private void Update()
    {
        if(close)
        {
            this.Close();
        }


    }

    private void OnLostFocus()
    {
        close = true;
    }

}
위에서 설명한 작업을 수행한 후 다음과 같습니다.

약간의 화면적인 외관과 프레임 같은 처리를 더하면
괜찮을 것 같아서요.

코드 해설


그럼 코드 설명 좀 해주세요.
코드를 참조해야 하기 때문에 다른 화면에 위 코드를 붙여서 보는 게 좋을 것 같아요.

관심사는 Rect입니다.


이번 소스 상황.
화면을 만들기 전에 2개의 렉트를 추가로 확보했다.
하나는 Horizontal Block에서 왔어요.
다른 하나는this의 값에서 얻은 것이다.
일단 첫 번째 설명부터.
EditorSampleMain 측면의 onGUI()에 대한 rect 값입니다.
Horizontal Block 컨텐트를 표시할 때의 크기입니다.
따라서 이 경우 File이 적힌 버튼의 크기가 값으로 반환됩니다.
이 블록의 크기를 얻기 위해 진행된 것이다.
두번째
이 화면의 표시 부분의 위치와 크기를 얻습니다.
그러니까

1은 파란색 테두리 부분입니다.
2 는 빨간 테두리 부분입니다.
구역
(파란색 부분만 있으면 돼요!)이 점을 알아차린 사람.
그렇게 생각하면 실행하세요. 아마 왼쪽 상단에 메뉴 얼굴이 나올 거예요.
빨간색 위치 정보를 얻은 것은 왼쪽 위 기점의 X와 Y를 얻었기 때문이다.
이렇게 하면 현재 빨간색 상자의 창 위치가 표시됩니다.
그 위치 정보에 대해 파란색 부분의 사이즈 Y를 얻어서 File을 눌렀을 때 나와요.
창의 위치를 계산하는 중입니다.
따라서 두 곳의 Rect 정보가 필요합니다.
2부터 창 위치 시작
1부터 시작해서 창에서 명령량의 위치를 엇갈리게 합니다

좋은 웹페이지 즐겨찾기