호우동의 개발일지

Today :

article thumbnail
[OS] 운영체제가 하는 일과 제공하는 방식(서비스와 사용자 인터페이스)

이번 포스팅 목표 운영체제가 사용자에게 제공하는 서비스에 대해 알아가는 것 사용자에게 서비스를 제공하기 위한 방식(인터페이스)을 알아가는 것 1. 운영체제 서비스 운영체제는 프로그램과 그 사용자에게 특정 서비스를 제공 서비스로 인해 프로그래머가 작업을 더 쉽게 수행 가능 운영체제 서비스를 바라보는 관점 - 사용자에게 도움을 주는 목적 사용자 인터페이스(UI) : 거의 모든 운영체제가 제공 그래픽 사용자 인터페이스(GUI), 터치 스크린 인터페이스, CLI 등 프로그램 수행(program execution) :시스템은 프로그램을 메모리에 적재해 실행 가능해야 함 프로그램 무조건 실행을 끝낼 수 있어야 함(정상이든, 비정상이든) 입출력 연산(I/O) : 수행 중인 프로그램은 입출력을 요구할 수 있음 입출력에..

article thumbnail
[Unity 3D] 에셋(Asset) 호출 및 적용, 그리고 생성

에셋 파일은 같은 프로젝트 내에서 GUID로 식별된다. 뿐만 아니라 이 GUID를 이용하여 에셋 파일을 호출하고, 조작하고, 생성하는 등 여러 가지 작업을 한다. GUID에 대해서는 예전에 포스팅해 둔 글을 밑에 넣어둔다. https://howudong.tistory.com/153 [Unity 3D] 유니티 에셋(Asset)의 식별되는 원리 유니티 에셋이란? 유니티 에셋은 게임 제작에 필요한 모든 요소들을 말한다. 3D 모델, 텍스쳐 이미지, 사운드, 파티클 효과, 유틸리티 등을 모두 유니티에서는 에셋이라고 부른다. 유니티 에셋 내 howudong.tistory.com 유니티 에셋 호출(불러오기) using UnityEditor; public class TestEditWindow : EditorWindo..

article thumbnail
[Unity 3D] 에디터 창(Editor Window)와 인스펙터(Inspector) 연결하기

목표 https://howudong.tistory.com/149 [Unity 3D] GUI를 이용한 인스펙터(Inspector) 커스터마이징 목표 오브젝트에 스크립트를 넣어 인스펙터 뷰를 커스터마이징 직렬화(Serialization) - 해당 필드를 유니티가 인식할 수 있는 상태로 만드는 것 - 유니티가 처리할 수 있는 형태로 만드는 것 - Inspect howudong.tistory.com 해당 포스팅에서 했던 GUI를 이용한 인스펙터 커스터마이징을 응용하여, 자신이 만든 에디터 창(Editor Window)과 인스펙터(Inspector)를 연결하겠다. 연결한다는 말은 에디터 창에서 프로퍼티의 값을 조절하면 인스펙터에도 적용되고, 그 반대도 적용되는 것을 말한다. 프로퍼티 값 초기화(가져오기/불러오기)..

article thumbnail
[Unity 3D] GUI를 이용한 인스펙터(Inspector) 커스터마이징

목표 오브젝트에 스크립트를 넣어 인스펙터 뷰를 커스터마이징 직렬화(Serialization) - 해당 필드를 유니티가 인식할 수 있는 상태로 만드는 것 - 유니티가 처리할 수 있는 형태로 만드는 것- Inspect를 조작하기 위해선 직렬화는 필수적인 과정 -> 유니티가 직렬화할 수 있는 오브젝트를 만들어야 한다. CustomEditor와 Editor 우선 커스터마이징 할 스크립트[CustomScript]를 작성한다. public class CustomScript : MonoBehaviour { public GameObject otherObject; public string myName; public int myHp; } 커스터마이징 에디터 스크립트[CustomEditorTest]를 CustomScript..

article thumbnail
[Unity 3D] GUI 에서의 Event의 역할 및 사용

Event OnGUI()를 호출하는 주체(OnGUI 보다 Low-Level) - 사용자와의 입력과 상호작용 - 트리거들을 공통적으로 처리하는 예약된 함수들이 정의되어 있다 - 효율성을 위해 OnGUI() 내부 코드와 현재 Event의 관계 여부에 따라 무시할 수 있음 1. 현재 이벤트가 드로잉이 아닌데, 드로잉 관련 코드를 만나면 그 코드를 무시 2. MouseClick 이벤트로 OnGUI()가 호출되면 해당 흐름에서는 Drawing 수행 코드 무시 Event 종류 Event.current: 현재 OnGUI()를 호출하게 된 Event Layout Event: Repaint 전 GUI들의 배치 값 관련 수집 이벤트 유니티 상단에 MyTool/OpenTool을 눌러 생성된 창 위에 마우스를 올리고 클릭, ..

article thumbnail
[Unity 3D] GUI Content 와 GUI Style 개념과 사용법 정리

GUI Content '무엇을 그릴까?'에 대한 클래스 아래와 같이 GUIContent를 생성하여 사용한다. private void OnGUI() { var myContent = new GUIContent(); //GUIContent 생성 myContent.text = "textText"; myContent.image = EditorGUIUtility.FindTexture("AvatarController.Layer"); EditorGUILayout.LabelField(myContent); // myContent Label 생성 myContent.tooltip = "this is ToolTip"; // 마우스 위에 대면 나오는 거 GUILayout.Button(myContent); } myContent에 ..

article thumbnail
[Unity 3D] GUI 레이아웃 시스템(Layout System) 이해하고 사용하기

GUI 레이아웃 시스템을 이해함으로써, Layout을 좀 더 세밀하게 다룰 수 있다. 예를 들어, EditorGUILayout.Label() 함수를 사용하여 여러 Label을 GUI로 만들면 세로로 Label들이 배치될 것이다. 하지만 LayoutSystem을 이해하고 지금부터 배우는 새로운 함수를 사용하면 좀 더 복잡한 배치가 가능해진다. 가로/세로 배치 // Layout을 가로로 배치한다. EditorGUILayout.BeginHorizontal(); { .. 원하는 GUI 배치 내용물 입력 } EditorGUILayout.EndHorizontal(); // Layout을 세로로 배치한다. EditorGUILayout.BeginVertical(); { .. 원하는 GUI 배치 내용물 입력 } Edit..

article thumbnail
[Unity 3D] 많이 사용되는 GUI 요소 그룹 사용법 정리

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..