겨울팥죽 여름빙수
Unity, ScrollRect verticalNormalizedPosition 조절
게임을 만들자/Unity 2023. 11. 7. 12:38

private void ScrollMoveToTargetObject(Vector2 _targetPosition) { scrollRect.verticalNormalizedPosition = (_targetPosition.y - scrollRect.GetComponent().rect.height*0.5f) /(scrollRect.content.rect.height - scrollRect.GetComponent().rect.height); } 위 코드는 ScrollRect/Content내의 타겟 Object로 이동하는 코드이다. 새로 스크롤이고, 해당 타겟이 가운데로 오게끔한다. 공식은 다음과 같다. verticalNormalizedPosition = (타겟의 위치 - ScrollRect 크기*0.5)/(Co..

4. UniRx, 메시지 병합(Merge, CombineLastest, Concat)
게임을 만들자/Unity 2023. 8. 25. 14:34

2023.02.24 - [게임을 만들자/Unity] - 1. UniRx 시작, Subject와 ReactiveProperty 2023.03.22 - [게임을 만들자/Unity] - 2. UniRx, Observable 메소드 2023.08.14 - [게임을 만들자/Unity] - 3. UniRx, 메시지 제어(Select, Where..) Merge 같은 타입의 메시지 스트림을 병합한다. 병합되는 메시지 스트림 중 하나라도 메시지를 보내는 경우, 구독 함수가 실행된다. ReactiveProperty a = new (); ReactiveProperty b = new (); ReactiveProperty c = new (); ReactiveProperty d = new (); a.Merge(b, c, d) ..

3. UniRx, 메시지 제어(Select, Where..)
게임을 만들자/Unity 2023. 8. 14. 14:37

2023.02.24 - [게임을 만들자/Unity] - 1. UniRx 시작, Subject와 ReactiveProperty 2023.03.22 - [게임을 만들자/Unity] - 2. UniRx, Observable 메소드 2023.08.25 - [게임을 만들자/Unity] - 4. UniRx, 메시지 병합(Merge, CombineLastest, Concat) UniRx에서는, 스트림으로 전달된 메시지를 변형하거나, 필터링 하는 등의 함수를 제공한다. 이 함수들은 C#의 Linq함수와 사용법이 비슷하다. 예를 들어 Select는 메시지를 변경하고, Where는 메시지는 필터링하는데, Linq함수의 Select/Where와 매우 흡사하다. Select 메시지를 변경한다. heroModel.DiffHp ..

Unity Android Pip
게임을 만들자/Unity 2023. 7. 12. 09:38

AndroidManifest.xml 수정 https://developer.android.com/guide/topics/ui/picture-in-picture?hl=ko onPause 호출됨 //UnityPlayer가 onPause시 내부에서 pause된다. 이것을 다시 resume으로 바꿔 활성화 시켜줘야한다. mUnityPlayer.resume(); } } //pip전환 함수 private void enterPipMode() { if (!IsSupportedPIP()) { return; } if (!IsAvailablePIP()) { return; } if (mUnityPlayer == null) { return; } int width = mUnityPlayer.getWidth(); int height..

2. UniRx, Observable 메소드
게임을 만들자/Unity 2023. 3. 22. 09:37

2023.02.24 - [게임을 만들자/Unity] - 1. UniRx 시작, Subject와 ReactiveProperty 2023.08.14 - [게임을 만들자/Unity] - 3. UniRx, 메시지 제어(Select, Where..) 2023.08.25 - [게임을 만들자/Unity] - 4. UniRx, 메시지 병합(Merge, CombineLastest, Concat) Observable메소드 IObservable객체, 즉 구독 가능한 객체를 만든다. Subject나 ReactivePropery 외에, 프레임워크에서 제공하는 기능들을 구독해야 하는 경우들이 있다. 예를들어 GameObject의 Update, 코루틴 등, 다양한 상황을 구독하고 싶을 때가 있다. Observable클래스에서 이러..

1. UniRx 시작, Subject와 ReactiveProperty
게임을 만들자/Unity 2023. 2. 24. 00:57

2023.03.22 - [게임을 만들자/Unity] - 2. UniRx, Observable 메소드 2023.08.14 - [게임을 만들자/Unity] - 3. UniRx, 메시지 제어(Select, Where..) 2023.08.25 - [게임을 만들자/Unity] - 4. UniRx, 메시지 병합(Merge, CombineLastest, Concat) UniRx를 이용해 Unity에서 Rx기반의 개발이 가능하다. c#에 Official Rx가 있지만, Unity에서 IL2CPP 호환문제로 제대로 동작하고 있지 않다. UniRx에는 다양한 비동기 함수와 Unity Ui 개발에 편리한 기능들이 있어, 조금 익숙해지면 매우 편리하다는 것을 느낄 것이다. 또한 Linq문법과 비슷해, 코드가 깔끔해보이는 것도..

C#, 기기 시간과 인터넷 표준시간 비교하기
게임을 만들자/Unity 2022. 5. 25. 02:33

게임 서비스를 운영하다보면, 핸드폰 기기 시간을 수정해, 이익을 보려는 유저들이 많다. 보통 일정 시간 주기로 보상을 주는 기능이 들어간 경우, 그 시간값을 서버가 아닌 클라이언트에서 한다면, 유저는 기기시간 조절하는 것만으로도 보상을 빠르게 받을 수 있다. 서버에서 시간을 확인해 막으면 좋지만, 그렇게하기 여의치 않을 경우, Resume 시 보상을 받기 위한 버튼을 눌렀을 때 구글 표준시간과 비교해 처리하면 좋다. //구글 시간 가져오기 public async Task GetCurrentTime() { using (var client = new HttpClient()) { try { var result = await client.GetAsync("https://google.com", HttpComple..

article thumbnail
Unity, Mac, FirebaseCppApp bundle 을(를) 열 수 없습니다.

현재 Mac 버전 : 카탈리나 Unity 버전 : 2021.1.12f 현재 위 버전에서, 구글 Firebase sdk를 import하고, 유니티 에디터를 실행 할 때, 위와 같은 에러가 뜰 때가 있다. 아마 맥 버전이 카탈리나라서 발생하는 건지, 그냥 맥 보안문제 인지 모르겠지만, 아래와 같이 권한을 주면 된다. 맥 [시스템 환경 설정 -> 보안 및 개인정보 보호]에 들어가면 위 사진과 같이, 확인된 응용프로그램이 아니라서 차단됐다는 표시가 있다. [확인 없이 허용]을 누르고 재실행 하면 될 것이다.

article thumbnail
Unity, Tilemap 검은 선 없애기.
게임을 만들자/Unity 2021. 4. 19. 20:05

유니티 Tilemap을 쓰면, 카메라 이동 시, 아래 그림과 같이 가느다란 실선이 생겼다 없어졌다하는 것을 볼 수 있다. 아마 타일 셀 사이에 것이 제대로 채워지지 못한 것 같은데, 저해상도 폰에서는 크게 문제 되지 않는데, 고해상도 폰에서는 저 선이 지저분하게 나타난다. 1. Material 생성 해결방법은 기본 default material를 쓰지말고, 아래와 같이 새로 만들어서 tilemap에 적용하면 된다. 우선 material를 새로 생성하고, 오른쪽 그림과 같이 Pixel snap을 체크해주자. 이제 이걸 tiledmap에 적용해주면 된다. 2. Tiledmap에 새 material 적용 Tiledmap Renderer에서 Material를 눌러, 새로 만들 material로 교체하면 끝이다...

article thumbnail
Unity Simulator 사용하기
게임을 만들자/Unity 2021. 4. 3. 18:51

유니티 에디터로도 물론 Ui창 크기를 테스트 해볼 수 있지만, 실제 폰에서 어떤지 궁금할 때가 많다. 실제 서비스하다보면, 일부 폰에서 ui가 깨진다는 소릴 듣곤한다. 하지만 안드스튜디오 처럼, 시뮬레이터나, 애뮬레이터 기능이 없어, 테스트 해보기 애매했었는데, 유니티에 시뮬레이터 기능이 있다는 것을 듣고 사용해 보게 됐다. 1. 패키지 설치 패키지 매니저로 들어가서, Device로 검색해, Device Simulator를 설치하도록 하자. 2. 실행 설치 후 -> Window -> General -> Deive Simulator가 있을 것이다. 실행하면 아래와 같이 창이 뜬다. 원하는 기기 종류를 선택해 Play버튼을 누르면, 기존 Game창이 아닌 시뮬레이터 창에서 실행되는 것을 볼 수 있다.