콘솔창으로 게임을 만드는 경우, UI 제작이 상당히 난해하다.물론, 연습이 아닌 한에야 콘솔창으로 작업을 게임을 만들 일은 없겠지만, 굳이 게임이 아니더라도 활용할 수 있는 요인이기도 하기에 한번 정리 해 보고자 한다.Console.Write와 Console.Read에 관해서는 사전 지식에 해당하기 때문에 서술하지 않는다.[참고 URL: https://lsu0503.tistory.com/8] (사전 캠프) C# 기초 문법 톺아보기 - 1공부할 내용 [수업자료와 순서를 소폭 변경하여 구성하였습니다.]입출력반복문조건문배열클래스상속추상 클래스가상 메서드남은 내용인터페이스난수 생성문자열 처리참조형 인수 [out / ref]자lsu0503.tistory.com 1. Consol.SetCursorPosition(..
이전에 사전캠프에서 문법 톺아보기를 하면서 정리했었던 인터페이스를 더 자세하게 파고들어가 볼까 한다.[기초 문법 톺아보기 - 2 URL: https://lsu0503.tistory.com/12] (사전 캠프) C# 기초 문법 톺아보기 - 2공부할 내용 [수업자료와 순서를 소폭 변경하여 구성하였습니다.]인터페이스난수 생성문자열 처리참조형 인수 [out / ref]자료형 확인 및 캐스팅 [is / as] 인터페이스(Interface)클래스나 구조체를 'lsu0503.tistory.com 사용법은 위 글에 정리되어 있으니, 이 문서에는 활용법 위주로 작성한다. 1. 인터페이스는 다중 상속이 가능하다.기초 문법 톺아보기에서도 나왔던 요소. 하지만, 생각 보다 훨씬 유용한 기능이었다.단순히 인터페이스의 항목을 상..
금일은 C#에서의 쓰레드 분기법에 대해서 정리해 보았다.단, Unity에서는 메인 쓰레드 이외의 쓰레드에서 MonoBehavior 클래스를 처리할 경우 Can only be called from the main thread 에러가 발생하므로 주의해야 한다.대신, Unity에서 대처방안으로 '데이터 지향 프로그래밍(소위 DOTS라고 불림)'이라는 새로운 개념을 소개하고 있다.해당 사항도 포함해서 쓰레드 분기에 대해서 다뤄보자. 쓰레드를 분기시키는 이유어지간한 CPU들은 모두 멀티코어, 멀티쓰레드로 나오는 현 시대에서 하나의 쓰레드로 주구장창 진행하는 것은 효율이 매우 낮다. 공부할 때 작업하는 단순한 프로젝트들이면 몰라도, 수많은 연산이 필요한 프로젝트를 진행할 때 하나의 쓰레드만 운용한다면 그 속도는 ..

금일은 C#의 기본 문법에 대해서 공부하였습니다. 얼마 전 문법 톺아보기로도 한번 접했기도 한 지라, 전체적으로 복습한다는 느낌에 추가로 스파게티 코드 예방을 위해 '쉽게 알아볼 수 있게끔 하는 것'에 주의하여 작업했습니다. 코드더보기int[,] board = new int[3, 3];bool turnInit, turnPlayer;turnInit = (new Random().NextDouble() -1; j--) { for (int i = 0; i outList = new List(); while (!isMoved) { stoneX = new Random().Next(0, 3); stoneY = new Random().Next(0, 3); ..
싱글톤싱글톤 자체는 본 캠프를 시작하자 마자 다루기 시작한 요소이긴 하나, 이번에는 이러한 싱글톤의 특징에 대해서 다뤄보려고 한다. MonoBehaviourMonoBehaviour에서 싱글톤을 생성하기 위해서는 다음 코드를 사용하면 된다.public class GameManager : MonoBehavior{ public static GameManager instance; void Awake() { if(instance == null) { instance = this } else Destroy(this.gameObject) }}여기에 씬의 이동에 관계 없이 유지하고싶다면 DontDestroyOnLoad(g..
스파게티 코드는 '장황한 코드' 보다는 '이해가 힘든 코드'라고 하는 것이 옳다.스파게티 코드라는 이름 만 들으면 이리저리 꼬여서 제대로 알아보기 힘든 코드라고 생각하는 경우가 많다. 본인도 얼마 전 까지는 그러하였고, 그렇기에 최대한 정리하면서, 간단하게 작성하려고 했었다.하지만, 미니 프로젝트[내일 작성할 예정]를 진행하면서 팀원의 피드백으로 알게 된 것이, '장황하다' 보다는 '알아보기 힘들다'가 주된 요인이라는 점이었다. 정확히는 어쩌다가 프로젝트 진행 중에 하나의 메소드에 여러 역할을 넣는 구성이 발생했는데, 이 부분을 다루는 도중에 발언된 팀원의 피드백을 통해서 알게 되었다. 비록 완벽하게 익힌 것은 아니지만, 스파게티 코드를 예방하기 위해서는 다음 요소를 반드시 지켜야 한다.Set[변수 설정..
인스턴스 라이프 사이클※ 자주 사용되는 단계는 굵게(Bold) 표시한다.최초 씬 로드 단계 Awake()프리팹 | 게임 오브젝트가 인스턴스화 된 직후에 호출된다.단, 처음 부터 비활성 상태인 경우에는 호출되지 않으며, 활성화가 되면 그 때 호출된다.주로 변수 초기화나 싱글톤 형성 같은 사전 작업을 위해서 사용된다.┗ 단, 변수 초기화는 Start를 사용하는 경우가 더 많다.OnEnable()오브젝트 활성화 직후 호출된다. Awake() 보다는 타이밍이 늦다. 에디터Reset스크립트가 처음으로 객체에 연결되거나 Reset 커맨드를 사용할 때, 스크립트의 속성(Property)를 초기화 하기 위해서 사용하는 함수.OnValidate오브젝트가 역직렬화 될 때를 포함하여 스크립트의 속성이 설정(변경)되었을 때 ..
금일 새로 습득한 지식Git에서 Merge 시, 충돌이 일어나는 경우에 대하여Git에서 Merge를 수행하면, 해당 프로젝트 내부의 변화점을 한데 모아서 적용하기 시작합니다.이 때, 같은 파일에 변경점이 중복된다면 충돌(Conflict)이 발생하게 됩니다.이 경우, 원래 내용을 따를지, Merge 받는 Branch를 따를지, 둘 다 남길지 사용자가 직접 판단하여 처리해야 합니다.이 사항에 대비하기 위해서 각 문단이 어떤 역할을 하는 지 주석을 다는 것이 중요하게 되며, 마찬가지로 각 기능을 개별 함수로 작성하는 것이 권장되는 이유이기도 합니다. 유니티 애니메이션의 한계점유니티 애니메이션은 간단한 오브젝트 변화를 구현하는데 유용한 기능으로 다양한 방식으로 활용됩니다.캐릭터의 상태에 따른 표시 방식에도 사용..
금일 배운 내용GithubGithub Desctop에 대하여Git의 작동 방식(팀원 교습 + 개인 학습)UI가 아닌 오브젝트에 클릭 이벤트를 추가하는 방법 상세 내용Github에 대하여 + Git의 작동 방식Git은 팀 단위 개발을 위해 개발 과정을 공유할 수 있도록 도와주는 시스템이다.Git은 '로컬 저장소'와 '리모트 저장소'를 이용, 프로그램의 버전을 컨트롤 하는 시스템이다.로컬 저장소: 개인 PC로 대표되는, 단일 구성원의 시스템. 개발의 주체가 되는 시스템이기도 하다.리모트 저장소: 서버로 대표되는, 구성원 공동으로 사용하는 저장 시스템.해당 프로젝트의 변경 사항을 저장하는 Commit Object를 이용하여 프로그램의 버전을 조절한다.Git은 Commit Object로 구성된 트리 형태를 사용..
금일 작업 내용타이틀 작업시작 버튼으로 게임 시작설정 버튼으로 설정 UI 출현 | 퇴장BGM과 SE 볼륨을 조절할 수 있도록 구성퇴장 버튼으로 게임 종료(영상에는 없음)임시용 BGM과 SE 추가BGM 출처: Pixabay - every day -playful cute piano 새로운 요소슬라이드세팅이나 다양한 방면에서 사용 가능한 Unity 자체 지원 UI 프리셋.public void OnSliderEvent(float volume) 을 통해서 슬라이드 바 변경 사항을 적용할 수 있다.┗ 철자가 틀리면 정상 작동이 되지 않으므로 주의할 것. 변수도 그대로 사용해야 한다. 결과물(영상) 코드AudioManager더보기public class Audio_Manager : MonoBehaviour{ pu..