분류 전체보기 98

c# - reflection과 Attribute에 대해 알아보자

오늘은 reflection과 Attribute에 대해 알아보고자 합니다. 1주 동안 만든 팀 과제를 제출하고 다른 팀들의 발표를 듣던 중 reflection을 사용하는 코드를 보게 되었습니다. 이름만 들어보고 사용을 한 번도 안 해봐서 이참에어떻게 사용하는지 간단하게 찾아보고 정리해 봤습니다. 자료를 찾다 보니 다들 Attribute를 묶어서 설명하더군요.일단 이것도 함께 정리해 봤습니다.  reflection 런타임 중에 객체의 형식을 가져와 사용할 수 있게 해주는 기능입니다. 관련 메서드들을 claude를 통해 깔끔하게 표로 정리해 달라고 해봤습니다. 타입을 가져오는 방식은 3가지로 나뉩니다.메서드  반환 타입설명예제GetType()Type객체의 실제 런타임 타입을 반환string str = "Hel..

C# 2024.10.23

유니티 - 에셋 번들에 대해 알아보자

오늘은 유니티에서 Resource 폴더 활용 글 작성 때 언급했던 것처럼에셋 번들에 대해 찾아봤고, 정리하는 시간을 가질까 합니다. 2024.10.18 - [유니티/공통] - 유니티 - Resources를 활용해 에셋을 로드해보자  에셋 번들여기서 말하는 에셋은 디스크의 실제 파일 / 아카이브 파일들을 말합니다. 간단히 말하면 유니티에서 Assets 폴더 아래 있는 모든 내용이이에 해당하는 내용이라 할 수 있겠네요.  이런 에셋들을 하나로 묶어서 관리하는 기법입니다.동작 원리 / 사용 방법 우측 하단을 보면 AssetBundle이라는 메뉴가 있습니다. 우클릭을 통해 New를 만들 수 있습니다.  A라는 폴더를 누른 채로 AssetBundle을 만들었습니다. 이름은 Test로 지정해 주었습니다만에셋번들의 ..

유니티/공통 2024.10.22

유니티 - 특정 스크립트가 적용되어 있는 오브젝트 찾는 법

오늘은 특정 스크립트가 어디에 적용되고 있는지간단하게 찾을 방법이 있어 소개하고자 합니다.  혼자 할 때는 몰랐는데 팀으로 협업하다 보니어떤 오브젝트에 어떤 스크립트가 붙어있는지 알기가 쉽지 않더라고요. 그래서 방법이 없을까 찾아보니,간단하게 해결할 수 있어 금방 시도해 보고 정리해 봤습니다.   유니티에서 원하는 스크립트를 우클릭한 다음 Find References In Scene을 눌러주면 됩니다.   그러면 씬에서 어떤 오브젝트가 해당 스크립트를 가졌는지 알려줍니다. 제가 선택한 스크립트는 해당 씬에서 가진 오브젝트가 없었나 봅니다. 다른 걸로 선택해 가지고 있는 상황을 보여드리면 다음과 같습니다.  ref : 라고 적힌 검색창 옆에 네모 아이콘?을 누르면 아래와 같이 확인 할 수도 있습니다. 정말..

유니티/공통 2024.10.21

유니티 - Resources를 활용해 에셋을 로드해보자

오늘은 Resources 폴더를 사용해동적으로 에셋을 로드하는 법에 대해 알아보고자 합니다. 구현 문제를 연습하다가 정적으로 할당하는 방법 외동적으로 시도를 해보라는 상황이 있었는데처음 떠올랐던 방법이 GetComponent, find 였습니다.  위 방식으로 어찌저찌 만들기는 했지만,다른 방법들은 없었을까 고민하던 중 이전에 Resource 폴더를 활용해 에셋을 불러왔던 방식이 떠올랐습니다. 당시에는 이런 게 있구나 하고 넘어갔었는데 지금 보니 다시 보이더군요.언제 사용하는지 문제점은 없는지 정리가 필요할 거 같아 작성해 봤습니다.  원리를 설명하자면  Resources라는 폴더를 만든 후,그 안에 할당해 주고 싶은 내용들을 넣어주고코드로 Resources 폴더에 접근,타입과 이름으로 해당 내용을 찾아..

유니티/공통 2024.10.18

유니티 - InputSystem에 대해 알아보자#2(내용 보충)

오늘은 InputSystem에 대해 더 자세히 알아보는 시간을 가지고자 합니다.지난번에 InputSystem에 대해 글을 작성하고 난 후, 추가로 알게 된 정보들이 몇 가지 더 있어서 정리하고자 합니다. 보충 버전이라고 할까요? 기존 블로그에 작성한 것에 추가하기에는 내용이 많아서 따로 글을 작성하게 되었습니다. 이전에 쓴 글 내용은 아래 링크를 참고하시면 될 것 같습니다.2024.10.15 - [유니티/공통] - 유니티 - InputSystem에 대해 알아보자#1(기본)  일단 본 글은 공식문서를 참조하여 작성되었습니다.유니티 버전에 따라서 InputSystem의 버전도 달라질 수 있습니다.참고하실 때 유니티 패키지 매니저에서 Input System의 버전을 확인하시고해당 버전에 맞는 문서를 체크하시면..

유니티/공통 2024.10.17

유니티 - Burst 컴파일러에 대해 알아보자

오늘은 Burst 컴파일러에 대해 알아보고자 합니다.공부하면서 스쳐 지나가듯 이름만 들어본 Burst 컴파일.궁금해서 한번 찾아 정리해 봤습니다.   컴파일러?특정 프로그래밍 언어의 문서를다른 프로그래밍 언어로 번역하는 프로그램입니다. 그중 Burst는 유니티 내부에서 사용하고자 만든 컴파일러입니다. 왜 일까요? 유니티는 c#을 토대로 작성하지만 사실 내부 엔진 로직들은 c++로 되어 있습니다. 그래서 실제로 프로그램이 동작하는 과정은  C# - IL( Intermediate Language/ 중간 언어) 생성 - C++ 처리- Assembly -  Machine Code 순으로 동작한다고 합니다.  이 과정에서 IL을 c++로 바꿔주는 과정을 IL2CPP라고 합니다. Burst의 동작 원리 C# - I..

유니티 - InputSystem에 대해 알아보자#1(기본)

오늘은 InputSystem에 대해 알아보고자 합니다. 그동안 유니티를 다루면서 Old Input System이라고 할까요?(찾아보니 Input Manager라는 명칭이 있었네요.) 이 방식으로 주로 작업을 하다가제대로 InputSystem을 사용해 보려고 하니 모르는 부분이 꽤 많이 나오더군요.  (이것도 원래는 New Input System이라고 했었는데이름이 InputSystem으로 바뀌었네요.) 정리가 한번 필요할 것 같아서 글을 작성해 봤습니다.   Input System을 사용하려면 먼저 패키지 메니저에 가서 추가를 해줘야 합니다.2023.3x이후 버전에서는 기본적으로 탑재가 되어 있으니만약 설치되어 있다면 이 부분은 넘어가셔도 됩니다.   설치하고 다음과 같은 창이 뜨면 YES를 눌러재시작해..

유니티/공통 2024.10.15

유니티 프로젝트 : #3 2D TopDown 게임 (완)

오늘은 개인 과제로 만들었던 프로젝트에 대한 회고 겸구현하면서 시도했던 내용들을 정리하고자 한다.이전 글에 캐릭터 이름 기능에 관해 글을 써버려서기능별로 나눠서 작성할까 하다 그냥 한 번에 프로젝트에 묶어 쓰기로 했다. 2024.10.11 - [유니티/2D] - 유니티 2D - 캐릭터 이름 구현 (WorldSpace 와 InputField - TextMeshPro) 과제 기간은 1주일을 받았고,강좌를 듣고 이틀이 지난 후부터 본격적으로 시작해완성하기까지 5일 정도의 시간이 걸렸다. 중간에 휴일과 주말이 있었고 이때도 작업을 했다.실질적으로 코드치고 만든 시간보다 구상하는 데 시간이 더 걸렸던 거 같은데;;;  다음엔 시간도 한번 측정해 봐야겠다. 일단 과제는 필수 기능과 도전 기능으로 나뉘었는데 제시한 ..

미니 프로젝트 2024.10.14

유니티 2D - 캐릭터 이름 구현 (WorldSpace 와 InputField - TextMeshPro)

오늘은 캐릭터 이름 표시 기능? 을 만들면서 놓쳤었던 부분을 기록하고자 합니다.지금 보니 다 간단한 거였는데 왜 그랬을까요;;; 일단 처음 구상한 아이디어는 이름을 입력받고 머리 위에 띄우는 것이었습니다.  UI를 통해 TextMeshPro를 넣어주면 간단하게 해결될 줄 알았습니다.그런데 문제가 발생했습니다. 시네머신 카메라를 이용해 플레이어의 움직임을 따라가도록 했더니 UI의 위치랑 플레이어의 위치랑 차이가 나는 것이었습니다.  canvas를 player 아래에 하나 더 만들어서 그런가? 일단 여기서 1차 얼타기 시작. 해결 방법은 의외로 간단했습니다.   canvas는 기본으로 ScreenSpace-Overlay로 설정되어 있는데,이를 WorldSpace로 바꿔서 해결했습니다. 그래서 이게 뭔데? 싶..

유니티/2D 2024.10.11

유니티2D - 타일맵에 대해 알아보자 (default 브러시 외 , 룰 타일, 애니메이션 타일)

오늘은 타일맵에 대해서 알아보고자 합니다.2D 프로젝트를 진행하면서 평소 들어는 봤지만,안 써봤던 기능들 위주로 사용해 보고 정리해 봤습니다. 타일맵을 생성하는 방법 Hierarchy창에서 우클릭 - 2D object - Tilemap을 통해 만들 수 있습니다.설명을 위해 Rectangular를 선택했습니다. 만들면 아래와 같이 Rectangular 모양의 타일을 그릴 수 있는 판이 만들어지게 됩니다.   Hexagonanl - Flat - Top 비교  이제 타일맵을 채우기 위한 이미지들을 담을 타일 팔레트를 만들어야 합니다. 만드는 방법은 window - 2D - Tile palette를 누르면 됩니다. 다음과 같이 타일 팔레트 창이 뜨는데, 이때 Crate New Palette를 해주신 후 이곳에 ..

유니티/2D 2024.10.10