분류 전체보기 60

[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

[SwiftUI] @StateObject vs @ObservedObject

SwiftUI에서 사용하는 어노테이션중 @StateObject와 @ObservedObject는 왜 사용하는 것일까? @StateObject & @ObservedObject- 둘다 관찰중인 객체의 변경에 반응해서 화면(UI)을 업데이트 할 수 있게 해주는 SwiftUI의 Property Wrapper이다  그렇담 StateObject와 ObservedObject의 차이는 무엇일까? @ObservedObject- StateObject와 ObservedObject는 둘 다 "ObservableObject"라는 Protocol을 따른다final class CounterViewModel: ObservableObject{ @Published var count = 0 func incrementCou..

iOS/SwiftUI 2024.07.01

Unity 3D Object Drag & Drop

Unity에서 3D 게임을 만들다 보면 3D GameObject를 컴퓨터의 경우 마우스, 모바일의 경우 손가락으로 자유롭게 Drag & Drop 하여 원하는 위치에 놓는 기능이 필요할때가 있다 위에서 서술한 기능을 나는 아래와 같이 구현하였다 https://www.youtube.com/shorts/H-rxX2ozjUE3D Object Drag & Drop  우선 클릭 또는 터치 했을때 내가 Drag & Drop 하고자 하는 GameObject인지 구분부터 해야한다.private GameObject OnClickObjUsingTag(string tag){ Vector3 touchPos = new Vector3(0, 0, 0);#if UNITY_EDITOR touchPos = Input.mouse..

Unity 2024.06.04

Unity Design Pattern - Object Pool

Object Pool 방식의 디자인 패턴은 비단 Unity에서만 사용하는 패턴은 아니지만 Unity에서도 유용하게 쓸 수 있는 디자인 패턴이다 Object Pooling은 많은 GameObject들을 생성하고 파괴하는데 CPU를 최적화 시키는 방법으로 GameObject를 다 사용하고 난 후 GameObject를 파괴시키지 않고 비활성화 시킨 후 pool로 되돌리는 방식이다. 이는 GC(Garbage Collector)로 인한 버벅거리는 현상을 줄여주는 효과가 있다. 1. 간단한 Object Pooling 예시 [ObjectPool.cs]public class ObjectPool : MonoBehaviour{ [SerializeField] private uint initPoolSize; [Se..

Unity 2024.06.03

유니티 3D Model 파괴 효과 만들기

Unity로 건물이나 3D Model이 부서져 무너지는 효과를 만드는 방법 Probuilder Package를 이용해 건물이 부서졌을때 조각나는 부위의 GameObject들을 만들고 건물이 부서지면 미리 조각해놓은 오브젝트로 대체해버리는 방식 Probuilder Package로 건물을 조각낼때 조각낼 부위를 Cube GameObject를 사용해 범위를 지정해줄수 있음 건물이 무너지며 폭발하는 효과 - Probuilder 설치 Unity Package Manager에 가서 Probuilder를 설치, 필자의 경우 Probuilder 5.0.7 version을 사용 부서질 모델 오브젝트에 Probuilder MeshFilter Component를 추가할 예정 - Probuilder MeshFilter 추가 ..

Unity 2024.02.26

OpenCV Android Studio Hedgehog 연동기

Android Studio Hedgehog로 가며 Gradle이 kotlin script를 사용하게 되어 OpenCV 모듈을 사용하는데 약간의 장애가 있었다. Android Studio Hedgehog를 사용하는 중인데 OpenCV SDK를 사용해야 하는 분들에게 도움이 될까해 글을 작성한다. - OpenCV SDK 다운로드 https://opencv.org/releases/ Releases Become a Member Stay up to date on OpenCV and Computer Vision news Join our Newsletter opencv.org 위 경로를 통해 OpenCV SDK Android version을 다운 받는다 필자의 경우 4.9.0 버전을 다운받았다(필자가 사용하던 때 기..

Android 2024.01.30