유니티 C# 코드 컨벤션
Unity/Study2024. 6. 15. 18:31유니티 C# 코드 컨벤션

코드 컨벤션한 프로젝트에서 여러 명이서 같이 작업을 할 때 준수해야 하는 명확한 규칙 또는 지침 세트를 제공하는 가이드이다.코드 컨벤션 규칙을 준수하면 서로 작업한 코딩을 읽고, 관리하는 유지보수에 매우 용이하다.회사의 프로젝트의 코드 컨벤션은 약간의 차이가 있긴 하지만, MSDN에서 제공하는 일반적인 C# 규칙을 따르는 게 기본이다. .NET 코딩 규칙 - C#C#에서 일반적으로 사용되는 코딩 규칙에 관해 알아봅니다. 코딩 규칙은 코드를 일관되게 표시하고 코드 복사, 변경 및 유지 관리를 용이하게 합니다. 이 문서에는 문서 리포지토리 코딩 지침도learn.microsoft.com이 문서는 부트 캠프를 진행하면서 팀원들과 유니티를 사용하면서 정한 코드 컨벤션을 정리한 문서이므로, 이 코드 컨벤션이 무조건..

Update 사용 없이 Coroutine으로 게임 진행 구현
Unity/Study2024. 6. 14. 19:15Update 사용 없이 Coroutine으로 게임 진행 구현

기술 소개유니티를 Monobehaviour 클래스에 생명주기(Life Cycle) 중에 가장 많이 쓰이는 Update 클래스가 존재한다.Update 클래스는 프레임 당 한번 호출되는 클래스로 프레임 업데이트를 위한 주요 작업 함수이다.해당 클래스를 잘 제어하지 못하고 Update 클래스에 의존만 한다면 프레임 드롭같이 최적화 문제가 발생할 수도 있다.그래서 P.P.R 프로젝트에서 전반적인 게임 플레이를 Update 사용 없이 Coroutine으로 진행 루틴을 만들려고 한다.기술 설명YieldCache.cs : 코루틴 최적화/// Boxing 발생하지 않게 해주며, 의도치 않게 가비지가 생성되는 것을 방지class FloatComparer : IEqualityComparer{ bool IEqualit..

3D Slither.io [Chicken Brawl]
게임 프로젝트2024. 5. 29. 18:253D Slither.io [Chicken Brawl]

Chicken Brawl 개발 기간24.04.08 ~ 24.05.10개발 환경Unity 2022.3.15Visual Studio 2022Git (GitHub Desktop)Android (Portrait)담당 기능구글 플레이 출시 & 라이브 서비스 진행하이퍼 캐주얼 비주얼 구현 (툰 셰이딩, 라이팅)게임 상태 머신 구현핸드폰 진동 구현 (Haptic)모바일 조이스틱 구현핸드폰 기기별 노치 디자인 & 펀치홀 디스플레이 대응광고 버튼을 대비한 기능 추가관련 링크구글 플레이 Chicken Brawl - Google Play 앱지저분한 Chick Brawl에 오신 것을 환영합니다!play.google.comGithub 코드 GitHub - psw1305/ChickenBrawl-Codes: ChickenBrawl..

2D 퍼즐 RPG [P.P.R]
게임 프로젝트2024. 5. 28. 17:122D 퍼즐 RPG [P.P.R]

Pixel Puzzle RPG 개발 기간23.03.01 ~ 23.10.30개발 환경Unity 2021.3.25Visual Studio 2022Git (GitHub Desktop)Android (Portrait)담당 기능Update 클래스 없이 코루틴으로 게임 진행 & 코루틴 최적화로그라이크 스테이지 시스템 (참고: Slay-the-Spire)서브 시스템 구현 (퀘스트, 상점, 휴식)ScriptableObject 데이터 최적화DoTween을 활용한 연출 및 애니메이션 작업 구현Unity Localization을 사용하여 언어별 작업 테이블 구성APK 빌드관련 링크Github 코드 GitHub - psw1305/Unity_P.P.R_Code: P.P.R CodesP.P.R Codes. Contribute t..

2D 방치형 [용력사무소]
게임 프로젝트2024. 5. 28. 16:282D 방치형 [용력사무소]

용력사무소개발 기간24.01.10 ~ 24.03.08개발 환경Unity 2022.3.15Visual Studio 2022Git (GitHub Desktop)Android (Portrait)담당 기능Manager 싱글톤UI바인딩 & UI디자인Addressable 리소스 로딩 & 관리Firebase 계정 관리Firebase 랭킹 시스템안드로이드 APK 빌드 & 리팩토링관련 링크Github 프로젝트 GitHub - psw1305/TeamProject-IdleGame: 최종프로젝트-방치형게임최종프로젝트-방치형게임. Contribute to psw1305/TeamProject-IdleGame development by creating an account on GitHub.github.com팀 브로셔 용력 사무소 ..

유니티 UI Binding을 활용한 백 버튼 구현
Unity/UI2024. 3. 1. 15:52유니티 UI Binding을 활용한 백 버튼 구현

구현 소개안드로이드 모바일 하드웨어 버튼 중에는, 특히 백 버튼 일명 뒤로 가기 버튼을 누르면 상황에 적절한 행동을 수행하는지, 대응이 적절한지가 구글 피쳐드 검수 기준이라는 말도 이미 알려져 있는 상황이다. 모바일 출시를 위해서는 UI 뿐만 아닌 하드웨어에 대한 대응 기능도 구현해야 한다.기능 구현public class UIPopup : UIBase{ ... private void Update() { if (Input.GetKeyDown(KeyCode.Escape)) { Manager.UI.ClosePopup(); } }}기존 UIPopup들은 이미 내부적으로 스택을 통해 관리되어 있어서, 버튼을 통한 닫기만 구현하여 간단하..

유니티 노치 디자인 & 펀치홀 디스플레이 대응
Unity/UI2024. 3. 1. 15:48유니티 노치 디자인 & 펀치홀 디스플레이 대응

노치 디자인 & 펀치홀 디스플레이스마트폰의 화면을 최대한 활용하기 위한 디자인 기법상단부에 카메라, 스피커 및 센서 등을 몰아넣어 화면의 일부가 파여있는 형태를 말한다.기능 구현유니티 시뮬레이터로 여러 핸드폰 기기를 확인하다 보면 상단과 같이 SafeArea로 노란색 범위를 확인할 수 있다. SafeArea를 통해 UI Canvas에 Notch에 대응할 수 있게 코드를 작성한다.SafeAreaFitter.cs[RequireComponent(typeof(RectTransform))]public class SafeAreaFitter : MonoBehaviour{ private void Awake() { var rectTransform = GetComponent(); var..

유니티 Sprite Atlas 만들기
Unity/Optimize2024. 3. 1. 15:41유니티 Sprite Atlas 만들기

Sprite Atlas일반적으로 Unity는 씬의 각 텍스처에 대해 드로우 콜을 발행합니다. 하지만 많은 텍스처가 포함된 프로젝트의 경우 여러 개의 드로우 콜이 존재하면 리소스를 많이 소비하여 프로젝트의 성능을 저하시킬 수 있습니다.스프라이트 아틀라스(Sprite Atlas)는 여러 개의 텍스처를 단일 텍스처로 결합하는 에셋입니다. Unity는 여러 개의 드로우 콜을 발행하는 대신 이러한 단일 텍스처를 호출함으로써 하나의 드로우 콜을 발행할 수 있습니다. 그러면 큰 성능 소모 없이도 패킹된 텍스처에 동시에 액세스 할 수 있다.기능 구현Asset > Create > Sprite Atlas로 아틀라스 생성, 생성한 아틀라스 내의 들어갈 이미지 폴더를 넣어 Packing 관련 링크 스프라이트 아틀라스 - Un..

유니티 UI 롱 버튼 구현
Unity/UI2024. 2. 6. 14:36유니티 UI 롱 버튼 구현

구현 소개방치형 게임 특성상 재화를 많이 버는 만큼 여러 스탯을 강화하는데 그 강화 횟수는 방대한 편이다.이걸 일일이 버튼을 누르면서 강화하면 유저들의 불편함이 생김, 이를 해소하고자 롱 버튼 기능을 구현해야 한다.기능 구현롱 버튼 제어 private void OnPointerDown(PointerEventData eventData){ isPointerDown = true; pressTime = DateTime.Now; StartCoroutine(HoldPressListener());}private void OnPointerUp(PointerEventData eventData){ isPointerDown = false; isHoldPressed = false; upgrad..

유니티 Firebase 랭킹 시스템
Unity/SDK2024. 2. 6. 14:31유니티 Firebase 랭킹 시스템

기능 구현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..

image