구현 소개방치형 게임 특성상 재화를 많이 버는 만큼 여러 스탯을 강화하는데 그 강화 횟수는 방대한 편이다.이걸 일일이 버튼을 누르면서 강화하면 유저들의 불편함이 생김, 이를 해소하고자 롱 버튼 기능을 구현해야 한다.기능 구현롱 버튼 제어 private void OnPointerDown(PointerEventData eventData){ isPointerDown = true; pressTime = DateTime.Now; StartCoroutine(HoldPressListener());}private void OnPointerUp(PointerEventData eventData){ isPointerDown = false; isHoldPressed = false; upgrad..
기능 구현Firebase 에서 제공중인 Realtime DB를 이용해 랭킹 시스템을 구현LINQ 메서드 정렬이 적용이 안되므로 VerticalLayout을 역정렬로 표현 내림차순 구현int rank = (int)snapshot.ChildrenCount;foreach (DataSnapshot userSnapshot in snapshot.Children){ string userName = userSnapshot.Child("name").Value.ToString(); string userScore = userSnapshot.Child("score").Value.ToString(); var uiUserRank = Manager.Resource.InstantiatePrefab("UserR..
테스트 환경갤럭시 S20+, 갤럭시 플립4이슈 내용16 : 9 비율로 해상도 작업을 해오고 빌드 후, 팀원들에게 APK 배포 후 실행을 했을 때, 진행에 큰 문제는 없지만각자 다른 해상도에서 나오는 화면이 불균형하게 나타났다.재현 스텝APK 빌드 후, 각자 팀원들에게 배포된 APK 실행각자 다른 모바일 비율 환경에서 UI 해상도가 불균형하게 나오는 현상이 발생해결 방법UI Main Scene 부분은 Anchor 포지션을 수치가 아닌 pivot 값 수정으로 해결UI Canvas에서 Canvas Scaler 부분에서 Match 비율 조정을 Width = 0으로 고정문제 해결16:9 ~ 23:9까지 세로 비율 크기 상관없이 고정된 위치에 배치되도록 수정 완료추가적으로 뒤에 전투 부분은 따로 스크립트로 수정이 필요
기능 소개유저 데이터(Firestore)와 인벤토리 데이터(json)가 별개로 작동하여 시스템이 제대로 구축이 안 되어있음Firestore에 저장되는 데이터는 일일 사용량에 제한이 있어, 추후 출시에 문제가 발생할 수 있음그리고 Editor 내에서는 작동되지만 APK 빌드 후 인벤토리 저장에 문제가 발생⇒ 해당 3가지 트러블을 해결하기 위해 데이터 통합 작업을 진행기능 구현Data Savepublic void SaveToUserProfile(string fileName = "game_user.dat"){ string filePath = $"{Application.persistentDataPath}/{fileName}"; string json = JsonConvert.SerializeObject..
테스트 환경Unity Editor 2022.3.15이슈 내용유니티 APK 빌드 후, 플레이가 정상적으로 실행이 안 되는 이유를 디버깅으로 찾다가 해당 부분에서 에러가 발생private string _jsonPath = $"{Application.dataPath}/Resources/Texts/Stage/StageData.json";_tableText = File.ReadAllText(_jsonPath); // ($"{{\\"stageDataTable\\":{_tableText}}}");재현 스탭APK 빌드 후, 안드로이드 시뮬레이터를 통해 실행해당 코드 부분에서 파일을 읽어 올 수 없어서 다음 스크립트 진행이 불가해결 방법Application.dataPath는 에디터에서는 파일 경로를 잘 읽어오지만 플랫폼..
구현 소개유니티 에디터 플레이 모드가 아니더라도 저장된 데이터로 실시간 딜레이 구현하기기능 구현DateTimeDateTime timerStart = DateTime.Now;DateTime timerEnd = timerStart.Add(new TimeSpan(0, 10, 0));DateTime.Now를 통해 현재 시간을 확보 TimeSpan으로 10초의 딜레이 생성Delay Coroutinewhile (true){ if (totalSecondsLeft > 1) { if (totalSecondsLeft >= 60) { TimeSpan ts = TimeSpan.FromSeconds(totalSecondsLeft); timeCheckTe..
구현 소개Dictionary를 사용한 데이터 저장은 관리가 불편하다.관리를 쉽게 하기 위해 클래스로 만든 객체 필드,프로퍼티 값들을 Firestore에 저장할 필요가 있다.기능 구현Firestore 전용 데이터 클래스using Firebase.Firestore;[FirestoreData]public class GameUserProfile{ // Info [FirestoreProperty] public string Uid { get; set; } [FirestoreProperty] public string Nickname { get; set; } [FirestoreProperty] public long Gold { get; set; } [FirestoreProperty] publ..
기능 구현Firestore 초기화FirebaseApp app = FirebaseApp.DefaultInstance;FirebaseFirestore db = FirebaseFirestore.GetInstance(app);유저 데이터 읽어오기private void ReadUserDataFromFirestore(){ DocumentReference docRef = db.Collection("users").Document("GuestID"); docRef.GetSnapshotAsync().ContinueWithOnMainThread(task => { if (task.IsFaulted || task.IsCanceled) { Debug.Log("F..