유니티 16

[유니티] namespace 작성 꿀팁

동료 개발자분께서 유니티의 꿀팁을 알려주셨다. 유니티에서 namespace를 미리 지정해서 스크립트를 생성할 때 저절로 미리 지정된 namespace 안에 클래스가 생성되도록 하는 기능이다. Project Settings > Editor > Root namespace 란에 미리 지정할 namespace를 작성하면 된다. 아래 스크린샷에서 나는 "Lefthanddeveloper.Tistory"로 지정했다. Root namespace를 작성한 이 후, 유니티에서 script를 생성하면 아래와 같이 작성된 namespace 로 묶인 클래스가 생성된다. * Visual Studio 솔루션탐색기에서 생성한 class는 해당 기능이 적용되지 않는다. 오직 유니티 에디터에서 클래스를 생성했을 때에만 적용된다.

Unity & C# 2022.07.26

[유니티] 스크립트 아이콘 변경

가끔 유니티 에셋스토어에서 에셋을 다운받았을 때 그 에셋에 들어있는 스크립트들의 아이콘이 다른 걸 본 적있다. 유니티에서 스크립트를 생성하면 기본 아이콘 모양은 흰색 종이에 "#' 이 초록책으로 적혀져있는데, 나도 아이콘을 바꿔보고 싶었다. 방법은 너무 간단했다. 스크립트를 클릭하고 Insepctor에 아이콘 모양을 클릭하고 "Other" 를 선택해서 원하는 Sprite를 선택하면 아이콘을 바꿀 수 있다. 아래 사진는 최근에 작업한 오픈소스 토이프로젝트 Dancing Finger에 들어간 스크립트들의 아이콘을 바꾼 모습이다. (Dancing Fingers). Project View 와 Inspector view에서 스크립트들의 아이콘들이 lefthanddeveloper logo(파란색 손) 모양으로 바뀌..

Unity & C# 2022.07.24

Dancing Fingers

특별한 이유없이 그저 재미로만 토이 프로젝트를 만들고, 이거를 오픈소스로 공유해서 사람들과 나누는 것도 재밌겠다는 생각에 시작한 첫 프로젝트, Dancing Fingers. nuget package "CSCore"를 사용하여 PC의 audio을 분석한 데이터를 가져와 손가락 움직임으로 비쥬얼라이징하였다. 각 손가락 마다 각 Frequency를 지정해줄 수 있게 하였고, 그 Frequency에 맞춰서 손가락이 펼쳐진다. 손가락은 unity asset store에서 무료로 판매중인 stylized simple hand를 사용했다. 약간 병맛 컨셉에서 재미를 주고 싶었는데, 그 의도는 조금 이룬 것 같기도 하다? 손가락이 각각 꿀렁꿀렁(?) 움직이니 뭔가 오묘하면서도 재밌으면서도 기괴하면서도.... 음악과 함..

Playground 2022.07.22

[c#] Obsolete 활용하기

Attribute 중 Obsolete 라는 친구가 있다. 영단어 해석을 하면 "더 이상 쓸모 없는" 이라는 뜻인데, 해석의 뜻과 같이 더 이상 필요없는 class나 변수, 함수에 쓸 수 있다. 사용 방법은 간단하다. 더 이상 쓰지 않는 class, 변수, 함수 앞에 [Obsolete("string")] 형식으로 작성을 하면 된다. 유니티에서는 Monobehaviour를 상속받는 클래스, 즉 컴포넌트로 쓰일 클래스 앞에 Obsolete를 쓰면, 다음과 같은 모습이 인스펙터에서 보인다. 여기서 "Not Supported Anymore" 라는 메세지는 Obsolete Attribute의 파라미터로 넘긴 string 값이다. 코드를 살펴보면 다음과 같다. (빨간색 화살표) 그리고 함수 앞에 Obsolete를 추..

Unity & C# 2022.07.14

[유니티] Frame Debugger 사용하기

유니티 Profiler 기능 중에 Frame Debugger라는 유용한 Debugging 툴이 있다. 한 프레임에서 Rendering이 이루어지는 것을 볼 수 있다. Frame Debugger는 유니티 에디터가 Play 중일 때 Profiler에서 Rendering을 클릭 하고 아래에 Open Frame Debugger를 클릭하여 열 수 있다. Frame Debugger가 열리면, 에디터에서 Game View에서 빨간색 글씨로 "Frame Debugger On" 이라고 뜨게 된다. 그리고 Frame Debugger 창에서 상단에 Range Bar 가 보일텐데(아래 스샷에서 파란색 화살표), 그 Range Bar를 마우스로 드래그 하면 해당 프레임에서 렌더링 되는 순서를 하나씩 보여준다. Frame Deb..

Unity & C# 2022.07.12

[유니티] 색깔이 들어간 나만의 Debug.Log() 만들기

유니티 Console에 Log를 남길 때, 너무 많은 Log가 남아서 내가 원하는 Log 를 찾기 힘들 때가 있지요. 그럴 때 눈에 딱 띄게 색이 입혀져 있다면 편리 할 것 같아서, 나만의 Debug.Log()를 만들어보면 좋겠다는 생각이 들었습니다. Log Message에 색을 입히는 방법은 매우 간단합니다. log 하려는 string message에 태그로 감싸면 되고, "___" 부분에 자신이 원하는 색을 넣으면 됩니다. CustomDebug 라는 static class 를 만들어주고 Log함수를 만들어보겠습니다. 한가지 주목할 점은 태그에서 #을 붙이고 colorString을 넣었는데 그 이유는 colorString이 hexadecimal string이고(참고) 그 앞에 #을 붙여야 태그 안에서 ..

Unity & C# 2022.07.08

[유니티] 간단 실험 : for loop in an update vs. multiple updates

유니티 개발을 하면서 "어떻게 작성하는 것이 더 최적화된 코드이지?" 라는 궁금증이 생기는 경우가 많이 있습니다. 그랬던 궁금증 중 한가지는 한 오브젝트가 update문에서 for loop를 돌면서 여러 오브젝트들의 함수를 실행하는 것이 빠를까 아니면 각 오브젝트들이 update문에서 자체적으로 실행하는 것이 빠를까 하는 궁금증이었습니다. 그래서 Unity Profiler를 통해서 어느 것이 더 빠른지 간단하게 실험을 해보았습니다. (Unity Profiler 사용법이 궁금하시다면 지난번 게시물을 확인해보세요 (https://lefthanddeveloper.tistory.com/25) 먼저 씬 배치는 다음과 같습니다. Target 오브젝트가 있고 Followers 오브젝트가 있는데 Followers 오브..

Unity & C# 2022.07.06

CustomEditor 활용하기 - Inspector Button만들기

최근 CustomEditor 활용하기 기능에 대해서 작성한 글을 이어서 이번엔 Inspector에서 Button을 만들어서 활용하는 방법을 알아보도록 하겠습니다. 이전 글에서 bool 값을 variable 보여주기를 했다면 이번엔 Button을 만들어서 자식들의 Transform을 List로 가져오게 해보도록하겠습니다. (이전 글 참조: https://lefthanddeveloper.tistory.com/21) MonoBehviour를 상속받는 InspectorButton 클래스를 작성해보겠습니다. 이 InspectorButton 클래스는 컴포넌트로 오브젝트에 붙게됩니다. public class InspectorButton : MonoBehaviour { public List childrenTr = ne..

Unity & C# 2022.04.06

CustomEditor 활용하기 - bool 값으로 variable 보여주기

직접 작성한 컴포넌트에 public이나 [SerializeField] 로 선언된 변수들이 사용되지 않는 경우들이 있습니다. 이럴 때 해당 변수들이 인스펙터에서 비어있는 것이 보기 싫을 때가 있죠. 이럴 때 toggle 버튼 역할을 하는 bool 값을 만들어서 해당 변수들이 쓰일 때는 인스펙터에서 보이고 쓰이지 않을 때는 보여주지 않는 기능을 한번 작성해보겠습니다. 먼저 예시로 쓰일 클래스 MyScript를 작성해보겠습니다. MyScript에는 다양한 변수들이 있습니다 bool 형태의 myNumber, string 형태의 myName, AudioSource 컴포넌트의 audioSource, Rigidbody 컴포넌트인 rigid. 그리고 우선 [HideInInspector]를 attribute를 붙여서 인..

Unity & C# 2022.04.03

[유니티] 왜 이제 알았을까 요놈 Animation Curve

최근 개발 중 쪼~~끔 수학 머리를 사용해서 수학 공식을 생각해서 특정 기능을 개발해야하는 순간이 있었는데 수학에 너무 약하기 때문에 고심하고 있을 때 지인 개발자께서 Animation Curve를 사용해보라는 제안을 하셨습니다. Animatin Curve는 존재 자체만 알고있었지 실제로 써본 적이 없었는데 이번에 써보면 너허어어어어무나 유용한 친구인 것을 깨닫게 되었습니다. 보통 수학 공식으로 결과값을 도출 해 내야 하는 경우에 Animation Curve를 쓰면 너무 유용할 것 같습니다. 아래 코드는 AnimationCurve를 사용해서 sphere의 움직임을 wave 처럼 움직이게 한 아주 심플한 예제 코드입니다. using UnityEngine; namespace AnimationCurvePrac..

Unity & C# 2021.12.16