SMALL

분류 전체보기 103

IAP(In-App Purchasing) 5.0.0 업데이트

결제 라이브러리 7으로 올려야 하는 이슈도 있고, 유니티 6.2 버전을 설치도 한 겸에 IAP 버전을 5로 올려보았다.역시나 예상했던대로 에러 뿜뿜으로 인앱 결제 버튼이 작동하지 않는다.AndroidJavaException: java.lang.ClassNotFoundException: com.android.billingclient.api.PurchasesUpdatedListenerjava.lang.ClassNotFoundException: com.android.billingclient.api.PurchasesUpdatedListenerjava.lang.Class.classForName(Native Method)java.lang.Class.forName(Class.java:454)... 결제 라이브러리를 ..

NullReferenceException: TMPro.MaterialReference..ctor

빌드 시 아래와 같은 오류가 발생하면서 빌드 실패가 됨.NullReferenceException: Object reference not set to an instance of an objectTMPro.MaterialReference..ctor (System.Int32 index, TMPro.TMP_FontAsset fontAsset, TMPro.TMP_SpriteAsset spriteAsset, UnityEngine.Material material, System.Single padding) (at ./Library/PackageCache/com.unity.ugui@ad30dfd93d36/Runtime/TMP/MaterialReferenceManager.cs:525)TMPro.TextMeshProUGUI..

EAC 세팅 관련

1. EOS 데브 포털(https://dev.epicgames.com/portal/ko) 접속2. 제품 선택 - 게임 서비스 - 안티 치트 메뉴 접속3. 아래 최신 빌드의 우측에 ... 버튼 클릭 - 빌드 활성화 클릭4. '빌드 구성 파일'과 '통합 키' 다운로드5. 유니티 에디터의 상단 'EOS Plugin' 탭 - Plugin Configuration 선택6. Tools 탭에서 각 경로(Full Path) 입력 후 Use EAC 체크 경로 예) Path to EAC Intergrity Tool : C:\CompanyProjects\\EAC\Windows\anticheat_integritytool64.exe Path to EAC Intergrity Tool Config : C:\CompanyProje..

채팅 구현 관련(연속 채팅)

채팅 관련 구현을 하는 중 텍스트 입력을 후 엔터를 눌러 onSubmit 이벤트를 받아 RPC로 메시지 전달하도록 구현하였다. private void SendChat(string message){ // null이거나 비어있는 텍스트는 리턴 if (string.IsNullOrEmpty(message)) return; SendMessage(message); // 입력 필드 초기화 inputField.text = string.Empty;} 그런데 UX 관점으로 채팅 메시지를 전달하면 끝나는 것이 아니라다음 채팅 내용을 바로 입력할 수 있어야 했지만 InputField는 다음 입력을 받지 못하였다.따라서 입력 후 즉시 InputField를 Select해주는 코드를 넣었다.priva..

앱 재시작(안드로이드 AOS)

유니티에서 재시작의 개념은 보통 처음 씬을 로드하여 초기화 단계를 거치도록 하는 방법을 사용한다.그러나 이 과정에 초기화 작업이 요구되며, Don't Destroy 객체는 각 데이터에나 상태에 대한 초기화가 필요하다.따라서 어플리케이션 차원의 재시작을 위해 아래의 코드를 실행하여 앱 자체를 재시작한다. public void Restart(){ using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { const int kIntent_FLAG_ACTIVITY_CLEAR_TASK = 0x00008000; const int kIntent_FLAG_ACTIVITY_..

string.Format() 또는 ToString() 함수의 표기 형식 파라미터

변수를 UI에 표시하기 위하여 ToString() 함수를 자주 사용하게 되는데,파라미터를 추가하여 표기 형식을 정의해 줄 수 있다. 괄호사이에 표기형식을 따옴표(" ") 로 감싸서 넣어주면 된다.예) value.ToString("N0");   F : 실수 F0 : 소수점 없이 표기  1234F1 : 소수점 한자리 1234.5F2 : 소수점 두자리 1234.56... N : 자릿수를 표기하는 실수 N0 : 소수점 없이 표시 + 천단위마다 , 표기 1,234N1 : 소수점 한자리 + 천단위마다 , 표기 1,234.5N2 : 소수점 두자리 + 천단위마다 , 표기 1,234.56... P : 백분률 P0 : %로 표기. 0.3f -> 30%D : 0을 붙이는 정수 D0 : 123D1 : 한자리 123D5 : 다..

빌드 리포트 인스펙터(Build Report Inspector)

빌드 apk 파일이 스토어에 올릴 수 있는 150MB를 넘어가서 Addressable로 전환하는 과정에 빌드에 포함되는 리소스가 어떤 것이 있는 알고 싶어져서 찾아보았다. 유니티 제공하는 SDK 중 Experimental로 제공하는 Build Report Inspector가 있어서 사용하였다. 에디터 버전 : 2022.3.37fSDK 버전 : Build Report Inspector 0.3.0-preview Experimental이기에 UPM(Unity Package Manager)에서 바로 받을 수 없고 아래와 같이 Add package by name을 통해 추가해서 받아야 한다.  Package name에 com.unity.build-report-inspector 를 입력하고 Add 버튼을 누르면 설..

LayerMask를 이용한 Layer 비교(feat.충돌 처리)

유니티에서 제공하는 LayerMask를 통해 해당 레이어와 오브젝트의 레이어를 비교한 뒤 충돌 처리를 하고자 한다. LayerMask는 레이어 전체 또는 다수의 레이어를 선택할 수 있는 Flag 이기 때문에 단순 비교연산자 '==' 으로 비교할 수 없으며, 비트 연산자 '&' 를 사용해야 한다. using UnityEngine;public class LayerMaskSample : MonoBehaviour{ public LayerMask targetLayerMask; private void OnTriggerEnter(Collider other) { if ((targetLayerMask & (1

Unity Script에서 HEX(Hexadecimal) 값으로 Color 변환하는 법

유니티에서 일반적으로 RGB 값 할당하여 Color를 가져온다. 예를들어 위의 Color 값을 가져오기 위해서 아래와 같이 코드로 작성하여 가져왔다. using UnityEngine; ... Color newColor = new Color(0.9622f, 0.8615f, 0.413f, 1f); 원하는 Color를 일일이 RGB 값을 써야한다는 것이 여간 불편한 일이 아니다. 이런 방식이 아닌 웹(HTML)에서 컬러 값을 가져올 때 사용하는 방식인 Hexadecimal(이하 HEX) 값을 사용하여 Color 값을 가져올 수 있다. 코드는 아래와 같이 작성하면 된다. using UnityEngine; ... Color setColor; ColorUtility.TryParseHtmlString("#7F7E83..

LIST