TIL (52) 썸네일형 리스트형 [ 25.08.12 ] TIL - Closure 클로저 [ Unity ] for 문에서 변수 i를 람다식( () => ... )에 직접 사용하면,루프가 끝난 후의 최종 값(6)으로 모든 버튼의 이벤트가 설정되는 문제가 발생하였다.for (int i = 1; i (); if (buttonText != null) { buttonText.text = i.ToString(); } Button button = difficultyButton.GetComponent(); if (button != null) { //int difficulty = i; button.onClick.AddListener(() => GameManager.Instance.setDifficulty(i)); }}이러한 이유는 람.. [ 25.08.11 ] TIL - Missing Reference 관련 소소한 문제 [ Unity ] 원래는 ui 관련 로직을 UIManager라는 싱글톤 오브젝트를 통해 진행하려고 했다. 그런데 유니티에서 씬을 넘나들 때마다 ui 오브젝트의 레퍼런스가 사라지는 문제(Missing Reference)가 발생하였다.인스펙터에 드로그앤드랍하여 연결해준 오브젝트들을 씬을 넘어가면 잃어버렸다. 알고보니 이러한 문제는 오브젝트의 생명주기 때문에 발생하였다.DontDestroyOnLoad를 통해 UIManager 자체는 파괴되지 않지만,UIManager가 인스펙터에서 직접 참조하고 있던 다른 씬의 ui 오브젝트들은 씬이 전환될 때 파괴된다. 요약하면 UIManager가 씬 전환으로 파괴된 ui 오브젝트를 계속 참조하려 해서 Missing Reference 오류가 발생하였다.이 문제를 해결하기 위해.. [ 25.07.02 ] TIL - Firebase 로그아웃 [ Unity ] 원래는 LobbyManager의 Start 메서드에서 Photon 서버 연결을 시도하였다. Lobby 신에 로그아웃 기능을 추가하였고, 이 때 Photon 서버 연결도 끊어주었다. 때문에 SignIn 신에서 다시 로그인하고 Lobby 신을 로딩할 때마다 Photon 서버 연결을 해야했고, Start 메서드는 스크립트 인스턴스가 최초로 활성화되는 순간에만 호출되는 모순이 존재한다. 따라서 OnEnable 메서드를 활용하여 문제를 해결하였다. 이 메서드는 스크립트 인스턴스가 활성화될 때마다 호출된다. 신기하게도 MonoBehaviourPunCallbacks 클래스에서는 OnEnable 메서드를 override하여 구현해야 한다.이 때 base.OnEnable()를 빼먹지 않고 작성해야 한다.. [ 25.06.27 ] TIL - Firebase Google 로그인 [ Unity ] 기존에는 Firebase의 Authentication을 활용하여 이메일 로그인 기능을 개발하였는데, 추가적으로 Google 로그인 기능을 개발하였다. 아래 첫번째 링크를 참고하여 개발을 진행하였다.두번째 링크의 SDK 파일을 추가하여야 GoogleSignIn 관련 메서드를 활용할 수 있다. 이렇게만 진행했을 때에는 아래와 같은 오류가 발생하였다.Exception: Field currentActivity or type signature not found ... ? 찾아보니까 안드로이드에서 빌드하지 않아서 발생한 오류인 듯 하여 안드로이드에서 빌드를 하여 apk 파일을 실행하였다.Google Sign In 버튼을 눌렀을 때 오류 메세지가 뜨지는 않는데 로그인도 되지 않는 문제는 여전히 존.. [ 25.06.20 ] TIL - Photon의 다양한 기능 [ Unity ] Unity에서 멀티플레이어 게임을 만들 때 PUN2 패키지는 Photon 서버와의 연결을 통해 네트워크 기능을 쉽게 구현할 수 있도록 도와준다. PUN2는 게임 오브젝트의 네트워크 동기화와 원격 함수 호출을 가능하게 하는 다양한 컴포넌트와 클래스를 제공한다.일반 GameObject는 PhotonView 컴포넌트를 추가하면 네트워크 객체로 전환된다. PhotonView는 네트워크를 통해 해당 객체를 식별하고, 실시간으로 상태를 동기화하는 데 사용된다. 이 컴포넌트 없이는 오브젝트의 상태를 네트워크로 동기화하거나 원격 함수를 호출하는 것이 불가능하다. PhotonView는 다음과 같은 핵심 기능을 제공한다. 1. IsMine을 통해 현재 클라이언트가 해당 PhtonView가 부착된 오브젝트.. [ 25.06.17 ] TIL - Photon 서버 연결 및 매치메이킹 [ Unity ] Unity는 PUN2 패키지를 통해 Photon 서버에 연결할 수 있고 이를 통해 멀티플레이를 구현할 수 있다. Lobby 씬에 들어가면 자동으로 ConnectUsingSettings를 통해 서버에 연결되고 온라인 상태가 된다. Join 버튼을 클릭하면 매치메이킹이 진행되는데,참여 가능한 룸이 있다면 JoinRandomRoom를 통해 랜덤한 룸에 참여하고,참여 가능한 룸이 없다면 CreateRoom를 통해 룸을 생성하고 참여한다. 콘솔창을 보면 dev region 관련 로그가 출력되는데,알아보니까 개발과정(dev build)에서는 dev region → best region 순으로 지역이 설정되고,dev region을 지우면 바로 best region으로 연결된다는 의미이다. 실제과정.. [ 25.06.16 ] TIL - FirebaseAuth 활용하여 이메일 로그인 [ Unity ] Firebase의 Authentication을 활용하면 다양한 사용자 추가 및 로그인 기능을 개발할 수 있다. FirebaseAuth를 통해 로그인을 하는 과정에서 ContinueWithOnMainThread라는 메서드를 통해비동기 작업(task) 완료 후 실행될 콜백을 지정해줬다. ContinueWith를 사용했을 때에는 로그인이 계속 실패했는데, Unity 환경에서는 UI 요소를 조작하거나 게임 로직을 실행하는대부분의 게임 작업이 메인 스레드에서 이루어져야 한다고 한다(by Gemini). 콘솔에 나온 로그를 보면 데이터베이스나 에뮬레이터를 설정하라는데 당장은 문제 없이 돌아가기에 그대로 둔다. [ 출처 ] 유니티 멀티플레이어 네트워크 게임 한방에 만들기 (포톤 + 파이어베이스).. [ 25.01.20 ] TIL - CSV 파싱 [ Unity ] 유니티에서 CSV 파일을 파싱하기 위한 방법 중 하나이다. 아래 스크립트를 프로젝트에 넣은 후, 파싱하고 싶은 CSV 파일을 Resources 폴더에 넣으면 된다.using System.Collections.Generic;using System.Text.RegularExpressions;using UnityEngine;public class CSVReader{ static string SPLIT_RE = @",(?=(?:[^""]*""[^""]*"")*(?![^""]*""))"; static string LINE_SPLIT_RE = @"\r\n|\n\r|\n|\r"; static char[] TRIM_CHARS = { '\"' }; public static List.. 이전 1 2 3 4 ··· 7 다음