Unity 프로그래머를 위한 합법적인 휴식 편집기

16853 단어 UnityEditorUnity

쉬고 싶다


일본인의 평균 근무시간은 8시간이다.이 와중에 계속 집중할 수 없겠죠?
아, 좀 게으름 피웠어, 트위터처럼!
지금이야말로 정력이 쌓일 때다. 매일의 임무를 소화하고 싶다!
그만큼 합법적인 휴식 시간을 얻기 위해 유니티 에디터를 만들었다.

무슨 일을 기다리고 있는 것처럼 보이는 합법적인 숨 돌리는 편집기다.

사용법


  • 토탈을 시작할 스위치를 설정하고 쉬고 싶은 시간
  • launch를 누르면 진행률 표시줄이 나타나며 정해진 시간에 따라 이동하면 사라짐
  • 간단 2단계!


    이외의 속성은 모두 겉만 번지르르한 것이다.
    그나저나 1분 주기에 술집이 꽉 차요.
    리셋 버튼을 누르면 중간에 가로대를 끌 수도 있다.

    소스 코드


    적힌 문자열이 비교적 적합하니 노출되지 않도록 여러 가지 개조를 해 주십시오.
    FindingPizza.cs
    using System.Collections.Generic;
    using UnityEngine;
    
    #if UNITY_EDITOR
    using UnityEditor;
    
    [CanEditMultipleObjects]
    public class FindingPizza : EditorWindow
    {
        string path = "";
        float progress = 1;     //進捗状況 0~1
        float  totalTime = 1;   // min
        float dummyNum = 1;
    
        float timer;
        int idx = 0;
        float turnupTime = 1;
        float fullConter = 0;
    
        bool[] dummyToggles = new bool[5];
    
    
        List<string> infos = new List<string>() {
            "the process of adapting to something."
            , "ordering my lunch"
            , "finding mr.right. the process is up to population density"
             , "Transrating"
    
        };
    
        [MenuItem("Window/Custom/FindingPizza")]
        static void Create()
        {
            UnityEditor.EditorWindow window = GetWindow(typeof(FindingPizza));
            window.Show();
        }
    
    
        void OnGUI()
        {
            //無意味なフォルダ指定
            EditorGUILayout.BeginHorizontal();
            GUILayout.Label("Folder Path", GUILayout.MaxWidth(100));
            GUILayout.TextField(path);
            if (GUILayout.Button("...", GUILayout.MaxWidth(30)))
            {
                path = EditorUtility.OpenFolderPanel("Folder Path", path, "");
    
            }
            EditorGUILayout.EndHorizontal();
    
            //パーセントとか書いてるけど単位は分
            totalTime = EditorGUILayout.Slider("total (%)", totalTime, 1, 200);
            UIBar(totalTime / 200.0f, "total");
    
            //何の意味もない値
            dummyNum = EditorGUILayout.Slider("accuracy", dummyNum, 1, 100);
            UIBar(dummyNum / 100, "accuracy (secure)");
    
            //必要のないToDoリスト
            dummyToggles[0] = GUILayout.Toggle(dummyToggles[0], "Eat breakfast.");
            dummyToggles[1] = GUILayout.Toggle(dummyToggles[1], "Walk around without f**kin' phone.");
            dummyToggles[2] = GUILayout.Toggle(dummyToggles[2], "Call to your mom");
            dummyToggles[3] = GUILayout.Toggle(dummyToggles[3], "See a baby cat.");
            dummyToggles[4] = GUILayout.Toggle(dummyToggles[4], "Love yourself.");
    
            if (progress < 1)
            {
                var temp = string.Format(" {0} / {1}", fullConter, totalTime );
                EditorUtility.DisplayProgressBar("Optimization" + temp, infos[idx] , progress); //プログレスバー表示
                Progress();
            }
    
    
            if (GUILayout.Button("launch"))
            {
                progress = 0;
                timer = 0;
                fullConter = 0;
                turnupTime = fullConter + 1 < totalTime ? 1 : totalTime - fullConter;
            }
            if (GUILayout.Button("reset"))
            {
                progress = 1;
                ResetProgress();
            }
    
    
        }
    
        void ResetProgress()
        {
            //プログレスバー削除
            EditorUtility.ClearProgressBar();       
        }
    
            //ここでプログレスバーが進む処理
        void Progress() {
    
            timer += Time.deltaTime;
            progress = timer /(turnupTime * 60f);
    
            idx = Mathf.FloorToInt(timer/60) % infos.Count;
            //バーが満タンになったら設定時間が過ぎたかをチェック
            if (progress >= 1) {
                fullConter += turnupTime;
                if (fullConter >= totalTime)
                {
                    ResetProgress();
                }
                else
                {
                    turnupTime = fullConter + 1 < totalTime ? 1 : totalTime - fullConter;
                    progress = 0;
                    timer = 0;
                }
            }
        }
    
        void OnInspectorUpdate()
        {
            Repaint();
        }
    
        void UIBar(float value, string label)
        {
            Rect rect = GUILayoutUtility.GetRect(18, 18, "TextField");
            EditorGUI.ProgressBar(rect, value, label);
            EditorGUILayout.Space();
        }
    }
    #endif
    

    쉬다


    적당한 휴식을 틈타 즐겁게 일해라!
    생활을 즐기다~

    좋은 웹페이지 즐겨찾기