728x90

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

[C#/TIL] TextRPG 개인 과제에서 겪은 것들 (1)

오늘 겪은 문제들TextRPG 개인 과제 하다가 진짜 처음부터 당황스러웠던 것1. 생각해 보니 C#에는 헤더파일이 없네?2. 그럼 다른 파일에 만든 클래스를 어떻게 받아올까!? => namespace를 활용함. 같은 namespace라면 서로 접근이 가능. namespace가 다른 경우 include 하듯이 using문으로 가져올 수 있다. SceneBase를 interface로 했다가, class로 바꿈.나만의 이유.1. GameManager에서 "현재 씬" 이라는 존재를 부모 클래스 형태로 하나만 가지고 있고, 그 객체를 통해 Update를 돌리기 위함. (주 목적)2. Start 함수와 Update 함수에서 공통된 할 일이 생길까봐 하.. 근데 씬 변환이 생각보다 많은 것 같아서 자식 씬들을 미리 ..

[C#/TIL] C# 문법 종합반 중간지점에서 배운 내용 정리

이 글에서 다룬 내용들 컬렉션에 대하여.NET Framework에 대하여틱택토 게임 만들기구조체 VS 클래스프로퍼티다형성(가상 메서드, 추상 메서드, 오버로딩과 오버라이딩)out & ref인터페이스Enum컬렉션에 대하여일단 여기서 컬렉션 = 자료구조임. C#의 컬렉션은 .NET Framework에서 제공하는 데이터 구조들을 포괄하는 개념이고, 자료구조뿐만 아니라 데이터 조작, 탐색, 필터링 등의 부가 기능을 포함하는 개념이라고 함.List가변적인 크기를 갖는 배열. 연결리스트가 아니었다.! 인덱스로 접근도 가능.C#의 List는 노드 기반이 아니고 동적 배열이라고 함. 노드 기반 리스트로는 LinkedList가 따로 있다. (C#의 List와 LinkedList는 각각 C++의 std::vector와 s..

공부 기록/C# 2025.01.31

[C#/TIL] 진입점 Main 메서드에 대한 이해, 문자열 처리 메서드 , C# switch 조건에 문자열 가능

학습한 것들네임스페이스 & 전역 using "using System;" : System 네임스페이스 내부 기능들을 사용하기 위한 코드. 네임스페이스는 클래스들의 묶음, 기능들의 묶음이라고 생각하면 된다. 예를 들어 Console 클래스를 사용하기 위해 System이 필요하다. 그런데 우리가 프로젝트 생성해서 보면 using문이 안 보인다.VS에서 전역 using으로 자주 사용하는 애들을 포함시켜놨기 때문이다. 실제로는 using문을 적은 것과 같다.  C#의 진입점에 대한 이해강의 과제를 한 파일로 완성시키기 위해 문제마다 솔루션을 함수로 나눠서 작성하고 Main함수에서는 솔루션 함수만 실행시키려고 했다. C#은 기본적으로 클래스 아래에 Main함수가 있으니 같은 영역에 함수를 정의하고 사용하려다가 아래..

공부 기록/C# 2025.01.27

[Unity/TIL] 미니 프로젝트 '팀원을 찾아라' 마무리

미니 프로젝트 미니 프로젝트를 진행하면서 얻게 된 깨달음을 위주로 마지막 소감을 기록하려고 한다. 깨달은 점들을 앞으로의 프로젝트에 참고하면 성장이 있을지도!? 💭 결과물 링크 : https://youtu.be/LobEpEj56nI?si=Xz4Qbj_21OdI85kz  프로젝트 소개내일배움캠프의 가장 첫번째 챕터로 미니 프로젝트를 진행했다. 내배캠의 사전캠프에서 수강했던 유니티2D 기초 강의를 이해하고 응용해보며 협업을 위한 Git 사용법, 프로젝트 마감 기한을 지키는 연습을 하게 되는 챕터이다. 강의의 내용 중에 '카드 뒤집기' 게임을 우리 팀만의 이야기를 담을 수 있는 '팀원 소개 카드게임'으로 만드는 것을 목표로 한다.개인적으로는 깃허브 중에서도 브랜치를 활용해보는 것이 추가 목표였다.종합 목표G..

[Unity/TIL] 버그 수정 - 애니메이션 전환 조건, Invoke 하는 동안 상호작용 막기

히든 스테이지에서만 카드가 뒤집혔다가 Idle로 안 돌아오는 버그 수정현재 레벨이 3(= 히든 스테이지) 일 때도 anim.SetBool("isOpen", false); 를 실행해줘야 하는데 else문에 있어서 생긴 문제였다. 주의하도록 허자~ // Card.cs void CloseCardInvoke(){ anim.SetBool("isOpen", false); // 이 코드는 어떤 레벨이든 실행해야 한다. if (GameManager.Instance.CurLevel == 3) { front.GetComponent().SetInteger("HiddenCard", -1); } front.SetActive(false); back.SetActive(true);} 카드..

[Unity/TIL] 카드 Lerp 이동, 애니메이터, Scene이 Merge 충돌날 때, Button Component 안 먹힘, 싱글톤에서 Start 함수 실행 횟수

작업 내용카드 섞는 연출 만들기처음에 카드가 모였다가 이동하는 연출을 애니메이션으로 만들어보려고 했다. 카드가 스크립트에서 부여받은 위치를 애니메이션을 통해 그위치로 천천히 이동하게 하려고 했다. 이것저것 해보는데 애니메이션에서 스크립트의 변수값을 바꿀 수는 있었으나 값을 받아오는 것이 안됐다. 튜터님께 여쭤보니 프리팹 각각 다른 값을 가지고 이동하는 거라서 애니메이션이 아니고 스크립트로 직접 이동해야 한다고 말씀해주셨다. 카드들이 가운데에 모여있다가 자기 자리로 Lerp이동하도록 만들었다. 가운데에 모여있다가 이동이 끝나고서 CardIdle 상태가 되도록 하기 위해 애니메이터에 있는 변수를 조건으로 활용하였다.// Board.csprivate void Update(){ if(isCardShuffl..

[Unity/TIL] 프로젝트 구조의 중요성, 초기화 & 생명주기의 중요성, LoadScene 비동기 함수, Enter Safe Mode 알림

프로젝트 구조의 중요성오늘의 키워드 중 하나를 프로젝트 구조의 중요성이라고 정했다. 게임 로비에서 난이도를 정해서 게임 씬으로 넘어가기로 결정했는데, 오전 회의 때 난이도에 따른 로직 변화 구조에 대한 논쟁(?)이 있었다. 내가 난이도에 따른 로직 구현을 맡게 되어 '싱글톤으로 만든 GameManager 에 난이도 변수를 넘겨주고 로직에서 변수를 조정하는 방식'을 제안드렸다. 하지만 씬을 넘겨주는 파트를 맡으신 팀원분께서 '난이도별 씬을 따로 만드는 방식'을 원하셨기 때문에 그 방식을 따르게 됐다.그런데!!! 씬에 무언가 추가하는 작업을 할 때마다 일을 두 번씩 하게 되면서 작업이 느려지게 되자 또다른 팀원분께서 다시 구조 변경을 제안해주셔서 게임 씬을 하나로 두고 난이도 변수로 조절하는 것으로 변경하게..

[TIL] 내일배움캠프 1일차 TIL | Git 특강과 미니 프로젝트 발제

유니티 설치 본캠프를 시작하는 날이니 다 같이 환경을 만들어두는 작업부터 했다. 사전캠프에 미처 참여하지 못한 분들에게 큰 도움이 되었을 것 같다.  유니티 허브에서 설치할 수 없는 버전은 유니티 다운로드 아카이브에서 선택에서 Install 하면 된다. Git 특강사전캠프를 모두 마친 인원은 첫 주를 미니 프로젝트로 시작하기 때문에 깃허브를 먼저 배우게 됐다. 깃허브 데스크톱을 사용하게 되었다. 클론, 커밋, 푸시, 풀과 리버트 등의 기본적인 개념을 익히고 팀원들과 테스트 리포지토리를 만들어 브랜치로 여러 가지 실습을 해보았다. 충돌도 여러 번 났다. 단순 작업이 겹쳤을 때는 다른 팀원분이 어떤 작업을 하신 건지 듣고 덮어 쓰면서 해결했다. 스크립트 충돌은 어떤 내용이 변경됐는지 보고 결정할 수 있기 때..

공부 기록/+α 2025.01.20
728x90