스파르타내일배움캠프TIL 38

[TIL] 내일배움캠프_Unity 디버깅

디버깅 : 프로그램이 예상대로 동작하지 않을 때 디버깅을 통해 문제를 찾아내고 이를 수정하여 정상 동작을 복원하는데 사용된다 또한 디버깅 과정에서 성능 문제나 비효율적인 코드를 식별하고 개선할 수 있으며 성능 향상에 도움을 준다 버그와 에러 유형 - 런타임 오류 : 프로그램이 실행 중에 발생하는 오류, 주로 무효한 연산, 배열 인덱스 오버플로우, 형식 변환 오류 등이 있다 - 논리 오류 : 문법적으로 올바르게 동작하지만 의도와 다른 결과를 출력할 때 발생하는 오류, 디버깅을 통해 식별하고 수정해야한다 - 컴파일 에러 : 코드가 컴파일 단계에서 에러를 발생시키는 경우, 주로 문법 오류나 변수 선언 문제 들을 포함 - 예외 : 실행 중에 예기치 않은 상황이 일어났을 때 발생하고 예외처리를 통해 처리할 수 있..

TIL 2023.10.20

[TIL] 내일배움캠프_ Unity InputSystem, params

InputSystem 이번 팀 프로젝트는 미니게임천국을 바탕으로 만든 게임이어서 각 Scnene마다 Player의 필요한 입력 처리가 제각각이다 예를들면 어느 미니게임에서는 공격이 필요하지만 다른 미니게임에서는 공격할 필요가 없는 게임들이 있다 하지만 Player의 입력 처리는 공유되므로 공격이 필요없는 미니게임에서 공격 버튼을 누르면 공격을 하는 애니메이션이 저장된다 이를 막기 위해 Player의 InputSystem -> ActionMaps -> Actions 값을 활성화 혹은 비활성화를 따로 진행하여 각 게임마다 입력값을 분리시켰다 public void EnableActions(params InputActions[] actionNames) { Input.OnDisable(); foreach (Inp..

TIL 2023.10.18

[TIL] 내일배움캠프_Unity Preab Variants, GameObject Pivot 변경

유니티를 사용하다보면 프리팹은 반드시 사용하게된다 여러 방법으로 프리팹을 사용할 수 있는데 만약 비슷한 프리팹을 나눠서 여러개 만들어야 한다면 상속의 개념이 떠오른다 유니티에서는 프리팹을 상속처럼 부모 자식 관계와 비슷하게 나눌 수 있다 Preab Variants : 기존의 Prefab을 Base로 두고 Inspector의 값을 다른 형태로 Override해서 사용하는 기능 공식 문서 설명 - 모든 Prefab 인스턴스와 마찬가지로 수정된 속성 값, 추가된 구성요소, 제거된 구성 요소 및 추가된 자식 게임 개체와 같은 Prefab Variant 의 GaemObject를 다시 부모로 지정할 수 없습니다. 또한 기본 Prefab에 있는 Pregab Variant에서 GameObject를 제거할 수 없습니다...

TIL 2023.10.17

[TIL] 내일배움캠프_Unity 개인과제 회고 (Feat. 일정관리 문제점 보완)

개인과제 기능 구현한 내용 - 카메라 줌인, 줌아웃 - 카메라 시점 제한 - BlendTree를 이용한 애니메이션 - 콤보공격 ( 강의와 동일) 회고 개인 프로젝트를 진행하면서 강의에서 배웠던 내용 외에 내가 생각했던 기능들을 대부분 구현하지 못했다 처음에는 "혼자 생각하면서 도움을 받지 않고 해보겠다"라는 다짐으로 시작했는데, 오히려 시간을 질질 끌게 되어 고집이 되어버렸던 게 문제였다 (개인과제라고 진짜 개인으로만 생각했던...) 물론 혼자 생각하는 시간도 중요하지만 일정에 차질이 생기지 않을 정도까지만 생각을 해보고 튜터님이나 다른 분들에게 도움을 청하는 방법이 더 좋았다고 생각한다 욕심이 과했고 안일하게 생각했던 것 같다 비록 나는 미완성으로 프로젝트를 마무리했지만, 이를 부정적으로만 생각하지 않..

TIL 2023.10.12

[TIL] 내일배움캠프_Unity 뒤끝, 포톤

저번에 강의에서 멀티를 만져본 후 계속 멀티플레이에 눈길이 가기 시작했다 포톤 말고도 뒤끝은 뭐가 다를까 생각하기도 하고 지금 진행중인 개인과제도 멀티플레이를 넣어보고 싶다는 욕심이 자꾸 든다 !!!! 그래서 저번에 알아보았던 포톤 말고 뒤끝이라는 시스템을 또 새로 알아보았다 뒤끝이란 ? : 온라인 게임 개발 및 운영을 위해 필요한 서버와 데이터베이스 구축을 손쉽게 할 수 있는 서버 시스템이다 기능 - 뒤끝 베이스 : 게임 개발에 필수적인 비동기 서버 기능들을 제공 - 뒤끝 챗 : 모바일 게임에 특화된 실시간 채팅 서비스를 제공하는 뒤끝챗 - 뒤끝매치 : 1:1 부터 팀 전까지 국내 최초 실시간PvP 서비스를 지원 - 뒤끝펑션 : 뒤끝베이스에 보안을 더한 서버 펑션 기능을 제공 특징 - 서버 연동부터 로..

TIL 2023.10.11

[TIL] 내일배움캠프_Unity Blend Tree, 믹사모 애니메이션 InPlace 오류 및 해결

Blend Tree : 여러 가지 애니메이션 동작을 조합하여 부드럽게 전환이 가능하고 다양한 동작을 제어할 수 있으며 매개변수를 이용하여 동적으로 애니메이션을 제어할 수 있는 도구이다 예를 들어, 캐릭터가 걷는 동작과 달리기 동작을 조합하여 서서히 가속하거나 감속하는 효과를 만들 수 있다 이번 개인과제에서 캐릭터의 이동이 4방향(forward, back, right, left) 으로 자연스럽게 움직이게 하기 위해서 블렌드 트리를 사용하였다 언리얼에서도 애니메이션을 섞고 조합하는 Blend 기능이 있어서 당연히 유니티도 있겠지 라고 생각한 결과 역시나 있었고 크게 다르지 않아 어렵지 않게 구현할 수 있었다 믹사모 애니메이션 InPlace 오류 및 해결 유니티 3D에서도 어김없이 믹사모가 등장하였다 하지만 ..

TIL 2023.10.10

[TIL] 내일배움캠프_Unity 옵저버 패턴

옵저버 패턴 : 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴 주로 특정 객체의 상태가 변경될 때, 이 변경을 다른 객체들에게 통지하고자 할 때 사용된다 게임 개발의 관점에서 옵저버 패턴은 이벤트 시스템을 통한 상호작용이 떠오른다 예를 들어 플레이어의 점수나 상태가 변경되었을 때를 생각할 수 있다 using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerHealth : MonoBehaviour { private int currentHealth; publi..

TIL 2023.10.03

[TIL] 내일배움캠프_Unity C# 자료구조, DotsWeen, Cinemachine

C# 자료구조 - Array : 고정된 배열 크기(선언시 크기를 지정해주고, 삭제 및 추가와 같은 변형이 불가능하다) 같은 타입만 저장 가능하고 다차원 배열 입력이 가능하다 주로 UI나 Data를 저장할 때 사용한다 - List : 배열 크기가 고정되지 않는다 같은 타입끼리만 저장 가능해서 박싱, 언박싱이 발생하지 않는다 일반적으로 가장 많이 쓰인다 - ArrayList : 배열 크기가 고정되지 않는다 서로 다른 타입의 데이터를 배열에 저장 가능하여 데이터를 가져올 때 박싱 언박싱이 일어나서 사용하지 않는다 - Queue : 선입선출 구조로 무조건 순서대로 사용해야할 때 주로 사용한다 ex) 순서를 따라가는 튜토리얼 DotsWeen : Unity 에서 사용되는 라이브러리로 애니메이션을 효율적으로 관리할 ..

TIL 2023.09.27

[TIL] 내일배움캠프 _ Unity 인트로 애니메이션 (feat.타임라인)

내일 작업해야하는 인트로 애니메이션을 만들기 위해 어떤 기능을 이용해서 컷씬을 제작하는지 알아보았다 타임라인이랑 시네머신이라는 기능이 있었는데 시네머신은 카메라 이동이 필요할 때 사용되는것 같아서 3D를 배울 때 사용해보도록 하고 타임라인 기능을 이용하여 간단하게 만들어볼 생각이다 TimeLine : 인게임 컷신을 제작하거나 복합 애니메이션을 제작할 때 사용하기 좋다 세팅 상단 Window 탭 -> Sequencing -> TimeLine 선택 EmptyGameObject 를 만들고 (TimeLineDirector로 사용 하기 위함) 선택한 후 TimeLine 창에서 Create 버튼을 누르면 선택한 오브젝트에 Playable Director가 생긴다 기능 1. Activation Track : Game..

TIL 2023.09.26

[TIL] 내일배움캠프_Unity 전략패턴, 유니티 컴포넌트 패턴

전략패턴 : 알고리즘 군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해준다 전략패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있다 * 캡슐화 : 달라지는 부분을 찾아서 나머지 코드에 영향을 주지 않도록 한다 그러면 코드를 변경하는 과정에서 의도치 않게 발생하는 일을 줄이면서 시스템의 유연성을 향상시킬 수 있다 즉, 어떤 일을 수행하는 알고리즘이 여러가지 일 때, 동작들을 미리 전략으로 정의함으로써 손쉽게 전략을 교체할 수 있는, 알고리즘 변형이 빈번하게 일어나는 경우에 적합한 패턴이다 구조 1. 전략 알고리즘 객체들 : 알고리즘, 행위, 동작을 객체로 정의한 구현체 2. 전략 인터페이스 : 모든 전략 구현에제 대한 공용 인터페이스 3. 컨텍스트 : 알고리즘을..

TIL 2023.09.26