분류 전체보기 45

Custom Unity Package를 UPM으로 배포하는 방법

UPM (Unity Package Manager) 란? UPM은 프로젝트에 필요한 기능등을 모듈단위로 분리해 기능을 제작하고 Package Manager를 통해 편리하게 다운로드해 사용할 수 있는 Unity 기능. UPM을 사용하지 않는다면 '.unityproject'를 받아 import하여 내 로컬 프로젝트의 Assets 폴더 아래에 들어가게 되어 외부 패키지를 삭제해야 하거나 할때면 일일이 찾아서 삭제해야 하는 불편함이 존재했음 그러나 UPM을 사용하면 패키지들이 패키지 단위로 묶여있고 독립적으로 관리되어 필요할 때 패키지를 업데이트하고 삭제할 수 있어 프로젝트를 깔끔하게 유지할 수 있다.Custom Package를 UPM으로 만드는 방법 처음엔 Unity Project에서 내가 만들고자 하는 Uni..

Unity 2024.07.16

[Unity] PostProcessing

PostProcessing이란?포스트 프로세싱은 기존에 렌더링된 Scene에 렌더링 효과를 더하는 작업으로 PostProcessing의 효과는 일반적으로 Scene 뷰에 따라 달라지거나, 최종 렌더링 결과물을 생성하기 전에 렌더링 되는 Scene위에 겹쳐서 표시됨 기존 컨텐츠를 수정할 필요없이 시각적인 효과를 즉시 구현하고 Scene의 품질을 개선할 수 있다는 장점이 있음 이 포스팅은 Unity의 Universal Render Pipeline(URP)를 사용하는 경우를 기준으로 설명하도록 하겠습니다. URP를 사용할 경우 따로 패키지를 설치할 필요없이 PostProcessing을 사용할 수 있음 URP를 사용해 포스트 프로세싱을 하는 방법1. GameObject를 하나 만들고 Volume 컴포넌트를 추가..

Unity 2024.07.11

[Unity] Animator Component의 Root Motion 이란?

Root Motion이란?유니티에서 Animator를 사용할때 'Apply Root Motion' 이라는 값이 있다.이 Root Motion이란 게임오브젝트의 위치와 회전을 Animation이 제어할 수 있도록 허용하는 것이다.예를 들어 Root Motion이 적용된 걷는 애니메이션은 캐릭터가 걷는 것에 따라 위치 값도 변하게 된다.(Animation이 게임오브젝트의 위치와 회전을 제어하기 때문) 반대로 Root Motion이 적용되지 않은 걷는 애니메이션은 캐릭터가 제자리 걸음을 하게 될것이다. Root Motion이 적용된 Animation의 경우 Script 코드를 작성하여 움직임을 구현하는거 보다 더 자연스럽게 움직임을 구현할 것이다(전문 모델러 혹은 디자이너 분이 만들어 주실테니...) 시네마틱..

Unity 2024.07.10

expected unqualified-id NSString

필자의 경우 Unity에서 사용할 Mac용 Bundle을 만들다가 발생한 에러이다. Unity의 C#과 커뮤니케이션할 Cpp와 그 Cpp와 소통할 Objective-C가 있었는데 Cpp에서 Objective-C 코드를 호출해야 하고 Objective-C에서 Swift 코드를 호출해야 하는 상황에서 Objective-C 코드에 NSString을 사용하는 쪽에서 "expected unqualified-id NSString" 이런 에러가 발생하였다. 해결방법:해결방법은 간단했는데 Cpp코드를 그냥 쓰지 않고 Objective-C 코드만 사용하는 것이었다. Cpp파일의 확장자인 .cpp를 .mm으로 변환하여 Objective-C++ 파일로 만들어 사용하는 것인데 Objective-C++은 Objective-C와..

Issue Tracking 2024.07.09

not available in automatic reference counting mode

XCode로 프로젝트를 하다 위와 "not available in automatic reference counting mode" 라는 에러가 발생함  AutoMatic Reference Counting Mode를 사용할수 없다는 이슈로 나 같은 경우 기존에 cpp로 작성된 코드를 xcode에 넣었다가 발생하였다. 해결방법: Automatic Reference Counting을 사용할수 없는거니 사용하지 않게 세팅 하면 된다Project의 BuildSetting에 들어가 Objective-C Automatic Reference Counting을 No로 설정한다

Issue Tracking 2024.07.08

[Swift] OpaquePointer vs UnsafePointer

Swift에서 Object-C, C, CPP 코드를 써야하는 경우 OpaquePointer와 UnsafePointer를 자주 볼 수 있다. 둘다 별 생각없이 쓰거나 읽었는데 이 둘의 차이를 확인해보자 결론부터 말하면 이둘의 차이는 header 파일에서 찾을 수 있다 header 파일안에 struct가 완전히 정의되어 있다면 UnsafePointer를 Swift에서 사용가능하며 포인터를 dereference 할 수 있고 .pointee를 호출해 안에있는 content를 볼 수 있다. // sample.htypedef struct Person person;struct Person{ int age; char* first_name;}void ShowInformation(Person*) void Sho..

iOS/Swift 2024.07.04

Update your Play Core Maven dependency to an Android 14 compatible version!

Unity로 만든 게임이 Google Play Store에 Live되고 있는데  Update your Play Core Maven dependency to an Android 14 compatible version! Your current Play Core library is incompatible with targetSdkVersion 34 (Android 14) 라는 이메일이 날라왔다. Play Core? Play Core가 뭐지 처음엔 gradle에 해당 버전의 라이브러리가 있을테니 그거 버전 올려서 다시 업데이트하면 되지 라고 생각했으나 내 gradle에 play core라는 라이브러리는 존재하지 않았다 우선 검색해서 찾아보니https://developer.android.com/reference/..

Issue Tracking 2024.07.03

[Swift] Actor 란?

동시성 프로그램을 만드는데 있어 어려운 문제중 하나는 Data Race를 피하는 것이다. Data Race란, 2개 이상의 개별 스레드가 동시에 동일 데이터에 접근해 접근중 하나 이상의 write가 발생할때 일어나는 이슈이다 이 DataRace가 일어나는 원인은 데이터가 shared mutable state이기 때문인데 데이터가 변경되지 않거나 공유되지 않는다면 data race는 발생할 수 없다 Actor Actor는 shared mutable state에 대한 동기화 매커니즘으로 Actor는 자신만의 상태를 가지며 해당 상태는 Program의 나머지 부분과 분리된다. Actor를 사용하면 Actor의 상태에 동시에 접근하지 않도록 해준다 class와 같이 사용하면 되지만 클래스와 달리 상속을 지원하지..

iOS/Swift 2024.07.03

[SwiftUI] @State vs @Binding

@State- 값의 변경을 감지하고 뷰를 자동으로 Update하는데 사용된다struct ContentView: View{ @State private var count = 0 var body: some view { VStack { Text("Count: \(count)") Button(action: { count += 1 }) } }} @Binding데이터의 양방향 바인딩을 구현하는데 사용, 뷰 간에 데이터를 공유하고 업데이트 하는데 사용[특징]1. 값의 참조: 값을 저장하지 않고 값의 참조를 저장, 부모 뷰와 자식 뷰가 같은 Data값을 참조2. 양방향 데이터 흐름: 자식 뷰에서 값을 변경하면 해당 변경 ..

iOS/SwiftUI 2024.07.02