251112 AudioSource
·
📖TIL
AudioSourceusing UnityEngine;public class SoundMake : MonoBehaviour{ AudioSource myAudio; // 카세트 플레이어 , CD 플레이어처럼 mp3 재생기 public AudioClip[] myClip; // 테이프 , CD , mp3 파일의 개념 void Start() { myAudio.clip = myClip[0]; // 클립도 갈아끼울 수 있다 myAudio = GetComponent(); // 컴포넌트 가져오기 myAudio.playOnAwake = false; // 시작과 동시에 킬 것인지 여부 myAudio.Play(); // 지금 오디오소스에 들어있는 클립 재..
251112 Object Pool
·
📖TIL
오브젝트 풀오브젝트 풀 개념을 익힌다배열과 리스트로 SetActive(true) , (false)심화 : 제네릭 버전으로 만든다모든걸 다 액션 기반으로 등록할 수 있는 시스템 구축 퍼포먼스 올리기Update 를 덜 돌게 하기Instantiate / Destroy 만 덜 하게 해도 성능 개선에 도움이 된다내부단편화 : 할당된 메모리 공간 안에서 사용되지 않고 남는 공간이 생기는 현상외부단편화 : 총 여유 메모리는 충분하지만 연속된 큰 공간이 부족해서 새 프로세스를 올릴수 없는 현상 ▼ 오브젝트 풀링 구현 코드using NUnit.Framework;using System.Collections.Generic;using UnityEngine;using UnityEngine.InputSystem; // 좌클릭 ..
Canvas
·
🧊Unity Basic/UGUI
UI 는 게임의 사용자가 게임에 가장 직접적으로 마주하는 첫 번째 상호작용 요소이다.게임을 떠나 어떤 프로그램이든 UI 가 존재하고 , 사용자는 UI 를 가장 먼저 마주하게 된다.UI 는 게임에서 아주 중요한 역할을 한다. 유저와 상호작용 하거나 , 게임의 상태를 유저가 빠르게 체크할 수 있도록 해준다.UI 작업을 원활하게 하기 위해서는 , UI 가 캔버스에 어떻게 뿌려지는지를 알고 있어야 한다.랜더링 되는 순서나 , 갱신 주기 등 캔버스의 내부 동작을 이해하고 있어야 한다. Canvas캔버스는 Unity UI 시스템 ( 특히 UGUI ) 를 그리는 공간 ( Rendering Area ) 이다.모든 Button , Text , Image , Panel 같은 UI 요소들은 반드시 Canvas 하위에 있어야..
팀 프로젝트 중 발생한 문제
·
📖TIL/🤔발생한 문제와 해결
프로젝트명 : Zombillions 이번 프로젝트는 5인 팀으로 진행한 탑뷰 생존형 타워 디펜스 게임이다.플레이어는 낮에는 자원을 채집해서 방어 타워를 건설하고 밤에는 좀비의 웨이브로부터 HQ 건물을 방어해야 한다.이 사이클을 반복하면서 점차 강해지고 , 자원 관리와 타워 관리가 핵심인 구조로 설계했다.장르 : Top - Down 생존형 타워 디펜스엔진 : Unity ( 2022.3.61f1 )개발 인원 : 5명작업 기간 : 25.10.27 ~ 25.11.03 사전 준비Code Convention코드 일관성 지향변수명 , 메서드명 만으로 기능과 목적 추론 가능할 것권장 변수명 , 메서드명 정리작업 사항 스케쥴러 작성 및 문서화너무 긴 시간 혼자 고민하지 말고 질문하고 소통할 것 TaskGlobal Man..
FSM ( Finite State Machine )
·
🧊Unity Basic/디자인패턴
FSM ( Finite State Machine )FSM 은 "유한 상태 기계" 또는 "유한 상태 자동자" 라고 부른다.FSM : 유한한 개수의 상태를 가지며 , 입력에 따라 상태가 전이되는 모델유한 상태 기계 : FSM 의 직역으로 , 컴퓨터 과학이나 공학에서 널리 쓰이는 용어이다.유한 상태 자동자 : 이론적 컴퓨터 과학 ( 형식 언어 , 오토마타 이론 등 ) 에서는 "자동자" 라는 표현을 사용상태 ( State ) : 객체가 특정 시점에 가지는 행동 또는 모드 ( Idle , Move , Attack 등 )전이 ( Transition ) : 상태 간 이동을 결정하는 조건 또는 이벤트상태 패턴 ( State Pattern ) : 객체의 상태에 따라 행동을 변경하는 디자인 패턴 상태 기계 : 게임 개발에..
251111
·
📖TIL
애니메이션 타입이 레거시일 때코드 작성using UnityEngine;using UnityEngine.InputSystem;public class PlayerMove : MonoBehaviour{ public float moveSpeed = 5f; public float smoothTime = 0.1f; // 입력 부드러움을 결정 private Animation anim; private InputAction moveAction; private Vector2 moveInput; private Vector2 smoothInput; private Vector2 smoothVelocity; private void Awake() { moveAction ..
MVC 패턴
·
🧊Unity Basic/디자인패턴
MVC 패턴 ( Model - View - Controller )프로그램의 구조를 세 가지 역할로 나누는 디자인 패턴이다.주로 유니티나 웹 개발 ( MVC 프레임워크 ) 에서 코드 구조를 깔끔하게 유지하기 위해 사용한다.Model데이터 ( 상태 ) 와 로직을 담당Player의 체력 , 골드 , 경험치 등캐릭터의 실제 능력치View화면 표시 ( UI 등 ) 를 담당체력바 , 점수 , UI , 애니메이션 등캐릭터가 보여지는 모습Controller입력을 받아서 Model 과 View 를 조정키보드 입력 - 캐릭터 이동 처리조종하는 플레이어 자신Controller 가 사용자 입력을 감지└ 키보드 W 키 입력Controller 가 Model 의 데이터를 변경└ playerModel.MoveForward( )Mod..
251110
·
📖TIL
아이템을 드래그 앤 드롭하는 기능을 구현하는 코드 작성using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;// 드래깅을 당할 수 있는 모든 UI 오브젝트들이 들고 있을 내용// 드래깅엔 3가지 스텝이 있다. 드래깅 시작 , 드래깅 중 , 드래그 종료public class Dragging : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler{ private Transform originalParent; // 원래 부모 패널 private Image image; private CanvasGroup canvasGroup; void Start() {..
251109
·
📖TIL
게임을 유저가 플레이 하기 위해 가장 첫 번째 마주하는 기능은 "유저의 입력을 받고 반응하는 것"이다.다양한 플랫폼을 지원하기 위해서는 각 플랫폼의 입력 장치들에 대한 구현을 해야 하지만통일된 기능으로 다양한 입력기기들에 대응하기 위해 유니티에서는 Input System 기능을 지원한다.PlayerInput plrInput;private void Awake(){ plrInput = GetComponent(); foreach(var map in plrInput.actions.actionMaps) { map.Disable(); // 일단 모든 입력을 동시에 받는 상황을 막는다 } plrInput.actions.FindActionMap("Player").Enable();..