8월, 2023의 게시물 표시

[Unity] 프리팹(Prefab)을 사용하여 동적 GameObject 생성하기

이미지
Unity에서 프리팹(Prefab)을 사용하여 동적으로 GameObject를 생성하는 방법에 대해 알아보자. 백단에서 데이터를 받아와 화면에 뿌려줘야 하는데 데이터의 양을 모르니 미리 GameObject를 생성해 둘 수 없는 경우가 있을 것이다. 이 경우, 프리팹(Prefab)을 사용하면 스크립트에서 GameObject 생성을 좀 더 수월하게 구현할 수 있다. 우선 프리팹을 새로 생성해준 뒤 동적으로 추가시킬 GameObject의 디자인과 기본 내용 등을 세팅해준다. 세팅이 완료된 프리팹을 사용하려는 스크립트에 프리팹을 연결해주면 스크립트 내에서  Instantiate()  함수를 이용해  프리팹 오브젝트를 불러와 사용할 수 있게 된다. (4번 사진 속,  GameObject rankingParentGO 부분) 스크립트에서 프리팹 GameObject를 원하는 내용으로 변경해서 사용하면 끝! 1. Create > Prefab 2. Prefab 내에 동적으로 추가할 오브젝트 세팅 3. 오브젝트에 연결된 스크립트에 생성한 프리팹(Prefab) 추가 4. 스크립트 내에서 프리팹 설정을 불러와 원하는 위치 & 내용 세팅

[Unity] IAP(In App Purchasing) 모듈을 사용하여 Google Play 인앱 결제 기능 구현

이미지
 Unity에서는 IAP모듈로 간단하게 인앱 결제 기능을 구현 할 수 있다. 1.      Unity 내부의 IAP 패키지를 설치한다.         Window - Package Manager - Packages: Unity  Registry - In App Purchasing - Install 2.      설치가 완료되면 결제 정보를 설정한다.          1) Project Settings 를 눌러 설정 창으로 이동 한다.          창을 종료 했을 경우 Services - In-App Purchasing - Configure... 이동          2) 13세 미만 대상에게 결제를 허용할 거면 'Yes', 아니면 'No'를 선택한다.          3) 패키지를 설정을 활성화 시켜주고 License Key를 입력한다.          4) License Key는 Google Play Console 사이트에서 가져 올 수 있다.           https://play.google.com/console          Google Play Console - 수익 창출 설정 - 라이선스 3.      스크립트 작성          InitUnityIAP() :  결제 모듈 초기화,  UnityPruchasing.Initialize() : 초기화 프로세스를 시작,  리스너 구현 및 구성 정보 제공   ...

[Unity] Google Mobile Ads SDK 활용하여 광고 삽입하기

이미지
Unity에서 광고를 표시하기 위한 여러 플랫폼이 마련되어 있습니다. 이 중에서도 Google의 AdMob 은 광고 통합에 있어 선택받는 주요 플랫폼 중 하나입니다. (이번 ‘Pi Brain Battle’에서도 Google AdMob을 사용하였습니다.) Google Mobile Ads SDK 를 활용하게 되면, 앱 내에 광고를 간편하게 삽입할 수 있을 뿐만 아니라,  광고의 표시와 관리에 필요한 다양한 기능을 제공하여 광고 효율성을 극대화하는 데 도움을 줍니다. 이번 글에서는 Unity 환경에서 Google Mobile Ads SDK를 활용하는 방법과 주요 이벤트들 을 자세히 살펴보겠습니다. 우선 Google Mobile Ads SDK를 활용하기 전에, 아래 Google AdMob 사이트에서 광고를 생성하여 앱 ID 와 광고 단위 ID 를 발급받아야 합니다. https://admob.google.com/home/ ID를 발급받았다면, 아래 사이트에서 Unity Plugin을 다운로드합니다. https://github.com/googleads/googleads-mobile-unity/releases 저는 Google Mobile Ads Unity Plugin v8.5.1 를 사용하였습니다. (버전 8.5.0은 더 이상 사용되지 않으니, 위의 버전으로 업그레이드가 필요합니다.) unitypackage를 다운로드 받은 후, 프로젝트 내에 import 해줍니다. import를 완료한 후, Google Mobile Ads 설정 과정에서 발급받은 앱 ID를 입력합니다. (아직 앱 출시 전이라면 발급받은 ID 대신, sample ID를 입력해야 합니다.  sample ID를 입력하지 않을 경우, 의심스러운 결제 활동으로 계정이 정지되는 현상이 발생할 수 있습니다. sample App ID: ca-app-pub-3940256099942544~3347511713 ) 이제 설정은 완료되었으며, 광고를 표시하기 위한 스크립트를 작성해야 합니다. 이번 ‘Pi B...

[Back-end] JPA를 사용하여 통계 개발 with QueryDSL

이미지
 Pi Battle Game 을 개발하면서 JPA를 채택한 이유는 보일러플레이트(Boilerplate)를 방지하기 위해서였습니다. JPA가 구현체를 만들어주는 메소드들만 사용할 경우 아쉬운 점들이 있는데요 1. 직접적인 연관관계를 맺지 않는 join이 어렵습니다 (예 : 서브쿼리) 2. entity의 필드가 아닌 항목들을 select 하는 것에 한계가 있습니다. (예 : max, sum, rank) JPA에서 복잡도 높은 쿼리를 구현하려면 어떻게 하면 될까요? 물론 어노테이션을 써서 native query 작성하면 되겠지만... 개발자의 자존심에 어쩐지 허락하지 않습니다. '비즈니스를 코드에 녹여서 쿼리 잔업을 줄이려고 기껏 JPA를 써놓고 네이티브 쿼리로 대체하겠다고?' '이 정도 쿼리면 뭐 많이 복잡한 쿼리도 아닌데 겨우 이 정도로 네이티브를 써야 하나...'  그래서 SRR이 채택한 방법은 바로 QueryDSL입니다. Query DSL과 JPA를 함께 사용한다면 아래와 같이 구현해주어야 합니다. (참고 : Spring Data JPA 공식 Docs ) (출처 : 이노그리드 공식블로그 ) 위 예시의 점선은 implements, 실선은 extends입니다.  JpaRepository는 빌드를 하더라도 그 구현체(implement)가 없기 때문에 Interface로서 사용하게 되어 있습니다. 대신, 런타임에 프록시를 이용해 동적으로 구현합니다. 이를 통해서 우리는 JpaRepository를 상속받은 Repository 인터페이스에서 QueryDslRepository를 상속받는 것으로 Spring Data JPA의 기능과 QueryDSL의 기능을 동시에 활용할 수 있습니다. 스프링은 JpaRepository 인터페이스를 상속받는 Repository 인터페이스를 찾으면, 이를 구현하는 프록시 객체를 생성하여 직접 기본 제공 기능을 구현합니다. 그리고 자동으로 QueryDslRepository을 상속받은 QueryDslReposit...

Users delete accounts and associated data

  If you want to request the deletion of your account and related data, please email the following email. When you send an email, please attach a screenshot showing the nickname information. Email :  ssusrr2023@gmail.com

Pi brain Battle