Event OnGUI()를 호출하는 주체(OnGUI 보다 Low-Level) - 사용자와의 입력과 상호작용 - 트리거들을 공통적으로 처리하는 예약된 함수들이 정의되어 있다 - 효율성을 위해 OnGUI() 내부 코드와 현재 Event의 관계 여부에 따라 무시할 수 있음 1. 현재 이벤트가 드로잉이 아닌데, 드로잉 관련 코드를 만나면 그 코드를 무시 2. MouseClick 이벤트로 OnGUI()가 호출되면 해당 흐름에서는 Drawing 수행 코드 무시 Event 종류 Event.current: 현재 OnGUI()를 호출하게 된 Event Layout Event: Repaint 전 GUI들의 배치 값 관련 수집 이벤트 유니티 상단에 MyTool/OpenTool을 눌러 생성된 창 위에 마우스를 올리고 클릭, ..
EditorGUILayout 함수 using UnityEngine; using UnityEditor; public class TestEditorWindow : EditorWindow { int intValue; float floatValue; Color colorValue; Gradient gradientValue = new Gradient(); Rect rectValue; Vector3 vector3Value; Vector3Int vectorInt3Value; UnityEngine.Object objectValue; string passwordValue; string tagValue; UnityEngine.ParticleSystemCollisionType enumValue; private void On..
스크립트 기본 준비 기본적으로 GUI를 사용하기 위해서는 2가지 사전 준비가 필요하다. 1. 스크립트에 UnityEditor를 사용함을 명시한다. 2. 해당 클래스의 부모를 EditWindow로 지정한다. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; // UnityEditor 사용 public class TestEditorWindow : EditorWindow // EditorWindow를 부모로 지정 { } 유니티 Scene에 새로운 스크립트 TestEditorWindow를 만들어 위와 같이 수정한다. 새로운 윈도우 만들기 GUI를 만드려면 그 GUI를 그리기 위한 도화지(..
문제 이해 단계 쉽게 말하면 2차원 표가 주어지고 그 표 안에는 사람 수가 적혀 있다. 그리고 입력으로 시작좌표(x, y)와 끝좌표(x, y)가 들어온다 그 사이를 사각형으로 둘러쌓을 때, 그 안에 들어오는 사람수의 총합을 구하는 문제이다. 문제 접근 단계 일단 이 문제를 읽자마자 너무 당연해서 당황했다. 그냥 당연히 좌표제한해서 하나하나씩 세면 되지 않을까? 근데 그러면 문제를 냈을 리가 없지, 하면서 문제 조건을 잘 읽어봤다. 영토 크기는 최대 1024X1024 = 즉 2^20으로 엄청나게 크다. 무엇보다도 계산을 한 번만 하는 게 아니다. 궁금해하는 영토의 개수 K가 최소 100,000개이기 때문에 일반적으로 개수를 세서 더하는 걸로는 딱 봐도 시간초과가 뜰 것 같다. 이전 계산의 결과를 저장하거나..
문제 이해 단계 인접한 수(양쪽에 있는 수)랑 차이가 딱 1씩만 나는 수를 계단 수라고 한다. 자릿수 N이 주어질 때, 총 몇 가지 경우의 수가 나오는지 구하는 문제이다. 문제 접근 단계 이 문제를 들었을 때는 전혀 감이 잡히지 않았기 때문에 일단 두 자리 계단수부터 계속 써봤다. N = 2 10 / 21 / 32 / 43 / 54 / 65 / 76 / 87 / 98 12 / 23 / 34 / 45 / 56 / 67 / 78 / 89 N = 3 101 / 121 / 123 / 212 / 232/ 234 / 343 / 345 454 / 456 / 565 / 567 /... / 898 / 987 / 989 1. 연속적인 숫자가 나타난다. 2. 경우의 수에 영향을 주는 것은 끝자리에 어떤 수가 오느냐이다. 3..
문제 이해 단계 https://www.acmicpc.net/problem/9465 세로가 2이고 가로가 n인 스티커가 있는데 각 스티커에는 점수가 적혀있다. 스티커를 뗄 때에는 특징이 있는데 점수를 얻는 스티커의 상하좌우에 있는 스티커는 더 이상 사용 할 수 없다. 이러한 상황일 때, 얻을 수 있는 점수의 최댓값을 구하는 문제 문제 접근 단계 해당 문제를 풀기 위해서 예제로 처음부터 시뮬레이션을 돌려보도록 하겠다. 시작값 50일 때 움직일 수 있는 칸 목록이다. 이렇듯 사실상 왼쪽과 아래에 있는 10,30을 제외하면 다 움직일 수 있는 것으로 보인다. 하지만 우리는 스티커 점수의 최댓값을 구하는 것이다. 이렇듯 100, 20,10은 50뿐만 아니라 다른 수에서 접근할 수 있다. 즉 굳이 50에서 바로 접..
이해 단계 수열 문제 시리즈이다. 수열이 주어질 때 증가하는 부분 수열을 원소들을 찾는다. 그 원소들의 집합 중 합이 가장 큰 집합을 찾아 그 값을 찾아내는 문제이다. 문제 접근 단계 가장 큰 수열 ~ 문제 시리즈 상 문제를 읽지 않아도 DP로 풀어야겠구나라고 생각이 바로 들더라.. 이러면 안 되긴 하는데 너무 문제가 시리즈상으로 많이 있어서 자연스럽게 그렇게 됐다.. 그래도 이 문제가 왜 DP로 풀 수 있는지 따져보기로 했다. 이 문제의 예제로 살펴보도록 하자. {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 왼쪽부터 x = 1이라고 해서 순차적으로 올라가 보면서 생각해 보겠다. x = 1 일 때 최댓값은 1이다. x = 2 일 때, (1)(1+100)(100) 중, 최댓값은 101이다...
문제 이해 단계 https://www.acmicpc.net/problem/2579 입력으로 계단의 개수가 주어지고, 그다음부터 각 계단의 점수가 순서대로 주어진다. 출발부터 시작하여 마지막 계단까지 이동하는데 2가지 규칙을 따른다. 1. 이동은 1칸 또는 2칸을 이동한다. 2. 1칸을 이동할 때는 연속되는 3칸을 이동할 수 없다(1,2,3 이런 식) 이런 조건에서 마지막 칸까지 이동할 때 얻을 수 있는 최대 점수를 구하는 문제이다. 문제 접근 단계 마지막 계단을 무조건 밟아야 하기 때문에 마지막 계단부터 생각해 보자. 마지막 계단으로 도달할 수 있는 경우의 수는 2가지가 있다. 1. 1칸 이동했을 때 2. 2칸 이동했을 때 그런데 우리가 구해야 하는 것은 마지막 계단에 도착했을 때의 최대 점수이다. 때문..