전체 글 45

[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

Android kotlin gradle에서 OpenCV 적용시 생기는 이슈 해결기

Android Project에 OpenCV Library를 적용하던 도중 아래와 같은 Error가 발생했다 Android Gradle Plugin 8.2.0 , Plugin [id: 'com.android.application', version: '8.0.2', apply: false] was not found in any of the following sources 이전에도 여러번 OpenCV를 안드로이드에 적용해본적이 있었으나 처음 본 에러라 당황 했는데 최근 Android Studio를 Hedgehog로 업데이트 하면서 gradle이 변경된거 때문인걸로 보였다. 개발환경 Android Studio: Hedgehog 2023.1.1 OpenCV Module은 옛날 gradle system에 맞춰 개발..

Android 2024.01.29

Unity Android Plugin 만들기

Unity에서 기본으로 지원해주지 않는 기능을 지원하기 위해서나 Native에 내가 구현해놓은 기능을 Unity에 사용하기 위해선 Plugin을 만들어야 함. 필자도 Native에 만들어놓은 기능을 Unity에서 사용하기 위해 Plugin 제작을 하는데 매번 만들때마다 어떻게 만들었는지 까먹어 내가 필요할 때 참고 하기 위해 블로그에 정리함. 개발 환경 PC: Mac Android Studio: Hedgehog | 2023.1.1 Unity: 2021.3.11f1 - Android Project 생성 먼저 Android Project를 생성해 준다. 본인이 만들고자 하는 Plugin의 성격에 따라 원하는 Template를 설정한다. 필자의 경우 "No Activity"를 많이 사용. - Android M..

Unity 2024.01.28

[Issue 잡기] A problem occurred starting process command 'Android/sdk/build-tools/28.0.3/i686-linux-android-ld''

개발하고자 하는 기능이 들어가있는 참고할만한 Android Project를 찾아 빌드하고 테스트 해보려고 하니 ``` A problem occurred starting process 'command '~/~/Android/sdk/build-tools/28.0.3/i686-linux-android-ld' ``` 의 에러가 발생하여 필자의 개발 환경이 M1 Mac이라 CPU Type 때문인가 의심 했었는데 아래와 같은 방법으로 해결 1. Rosetta 설치 $ softwareupdate --install-rosetta 2. Gradle Update 필자의 경우 Gradle Version을 4.2.2로 업데이트 하니 에러 없이 정상 실행되었음

Issue Tracking 2024.01.25

Targeting S+ (version 31 and above) requires that an explicit value for android:exported be defined when intent filters are present

Unity에서 Android를 Target으로 빌드를 하는 도중 Android12 기기에서 해당 Error가 발생하였다. 다른 기기에서는 괜찮았는데 12기기에서 문제가 발생하는걸로 봐선 Android12에서 뭔가가 있는걸로 보였다. 확인해보니 AndroidManifest.xml의 Tag에 android:exported 설정을 해주지 않아서 발생하는 문제였다. 이 설정을 해주면 해당 문제는 발생하지 않는다. 값은 true 혹은 false로 설정하면 되는데 android:exported="true" android:exported는 그럼 무슨 속성일까? exported 속성은 앱에서 activity, service, broadcast에 엑세스할 수 있으며 외부 응용프로그램에서 실행 될 수 있는지 정의하는데 사..

Issue Tracking 2022.01.30