분류 전체보기 77

5.8 - TIL

새로 알게 된 사실 사실 유니티의 내부적인 코어 엔진은 C++이란 사실, 그걸 중간에 C#을 통해 연결해주는 C#엔진이 있어 우리가 C# 코드를 작성할 수 있는 것이라 함 유니티는 버전마다 메타데이터가 있어 막 업데이트를 하면 메타 파일이 꼬일 수 있으니 조심하자 에디터 확장 기능도 있어 기획자들이 맵툴을 만들어주면 좋아한다고 한다. 과거 스타크래프트 유즈맵 만들 때 scm드래프트2의 타일깔기 같은 것을 생각하면 될 거 같다. 오늘은 트랜스폼에 대해 깊이 있게 배웠다. 겹치지기 않도록 하는 충돌체(Collider), 이미지, UI, 애니메이션 등 하나하나의 컴포넌트들이 합쳐져 있는 것이 게임 오브젝트이며 이 중 가장 중요한 것이 위치/크기/회전 값을 가지고 있는 트랜스폼 컴포넌트이다. 더보기컴포넌트는 게..

카테고리 없음 2024.05.08

스파르타 코딩클럽 3주차 KPT 회고록

이번 던전 텍스트 게임을 제작할 때 나는 팀장의 임무를 맡았다. 하지만 처음 맡는 팀장이다보니 미숙한 점을 너무 많이 보였고 아쉬움이 많이 남는 것 같다. KPT 회고록을 써보며 이번 프로젝트를 되돌아보려고 한다. Keep각자 담당하는 클래스를 나누어 작업하니 깃허브 사용시에 발생하는 문제가 적었고 만일 다른 클래스 내용에 수정이 필요하면 서로 간의 논의를 통해 수정해 나가는 과정 속에서 깃허브 활용의 장점을 느낄 수 있었다. Problem 휴일에 추가적인 구현을 시도헀을 때 다른 팀원 분들이 만든 클래스를 건드려야 하는 부분이 생겼었고 협의 없이 건드리기엔 리스크가 있었다. 또한 클래스 별로 나누어 작업하다보니 다른 분의 작성한 클래스에 대한 이해도 필요했고 내가 담당한 클래스는 저번 개인프로젝트 때 ..

KPT 회고록 2024.05.07

5.3 - TIL JSON

오늘도 팀프로젝트로 인해 긴 글 작성은 여유가 없어 짚고 넘어가야할 점을 간략히 기술한다. json을 통하면 콘솔서 데이터를 저장하고 불러오는 기능을 간단히 구사할 수 있는 기능이다. 직렬화와 역직렬화를 통해 구현가능한다. 직렬화는 간단히 그냥 객체를 json 문자열로 바꿔주는 것이고 역직렬화는 반대로 json 문자열을 객체로 변환하는 작업이다.using Newtonsoft.Json; using 문으로 Newtonsoft.Json을 불러와 사용한다. 직렬화는 간단하다. string inventoryFile = JsonConvert.SerializeObject(inventory);File.WriteAllText(filePathInventory, inventoryFile); JsonConvert의 Seria..

카테고리 없음 2024.05.03

5/2 - TIL - 추상클래스와 인터페이스

금일은 감기로 인한 컨디션 난조로 간략하게 정보를 작성한다. 오늘 스파르타코딩클럽의 튜터님 강의를통해 추상클래스와 인터페이스의 대략적인 느낌을 알 수 있었다. TIL을 쓰면서도 되게 고민되는 내용이였는데 약간의 감을 잡긴 한거 같다 허나 실습을 더 해야 정확한 감을 느낄 듯하다. 추상클래스는 NPC와의 대화를 생각하면 좋다. NPC와의 대화는 흐름이 비슷비슷하다. 이러한 비슷비슷한 흐름에대해 추상매서드를 여러개 넣어두고 자식한테 물려주면 자식이 이를 받고 어떠한 느낌으로 흘러가는 지에 대해 알고 추상메서드는 반드시 구현을 해야하기 때문에 구현을 하게 될 것이다. 진행 흐름을 표시할 수 있다는 점에서 인터페이스보다는 일단 클래스와 비교해보는 것이 좋다. 반면 인터페이스는 명세서 같은 것이다. 여러가지 결제..

카테고리 없음 2024.05.02

5/1 TIL - Delegate, Func, Action, 람다

오늘도 마찬가지로 팀 프로젝트에 집중한 하루였지만 그중에서 알아야할 거 같은 내용을 기록하였다. Delegate델리게이트는 메서드를 참조하는 타입이라 생각하면 된다. 변수처럼 메서드를 저장할 수가 있게 된다. c++에선 함수 포인터라는 용어로 만나본 적이 있는 내용이다. 그냥 함수를 쓰면 되지 왜 델리게이트를 써야하냐면 팀프로젝트하다보면 접근이 힘든 상황이 생길 수도 있으니 메서드 여러 개를 연결해두고 쓰자는 취지다. 또한 UI면 UI부분만 다뤄야지 게임 진행의 로직까지 들어간다면 다소 복잡해질 수가 있다. delegate void MyDelegate(string message);static void Method1(string message){ Console.WriteLine("Method1: " ..

C# 2024.05.01

금일 TIL

오늘은 팀프로젝트 일정으로 인해 TIL을 쓸 시간이 촉박하여 간략하게 서술후 차후에 보강하겠음 오늘 배운 가장 중요한 것은 선언은 스택에 쌓인다는 것이다. 메모리 영역은 코드, 데이터, 힙, 스택 영역으로 크게 나눠볼 수 있고 데이터는 static 선언시 들어가는 곳 선언 시에 스택에 쌓여져 위로 올라간다.반대로 힙의 경우 데이터가 생기면 아래로 내려가게 된다. 힙은 동적할당 즉 new 키워드를 통해 객체를 생성하면 힙에 생성이 되는 것이다. 또한 객체를 Animal cat = new Animal(); 로 생성하면 선언을 했으니 cat이라는 변수의 공간이 스택에 생길텐데 이 공간에 Animal 객체가 들어가는 것이 아니라객체가 있는 주소를 담아둔다. 그 주소가 바로 힙 영역에 있는 실 형태인 객체를 가리..

카테고리 없음 2024.04.30

금일 알게 된 사실

오늘의 TIL은 프로젝트 작업으로 인해 알게된 것을 짤막하게 서술한다. 여기서 알게된 사실들은 차후 유니티 문서항목에 추가할 것이다. 매개변수 public static void PrintTextHighlights(string s1, string s2, string s3 = "") { Console.Write(s1); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write(s2); Console.ResetColor(); Console.WriteLine(s3); } 해당 코드는 s2를 노란색으로 강조하는 함수이다. 다만 여기서 포인트는 s3에 있다. 매개변수에 s3 = "" 으..

카테고리 없음 2024.04.29

C# 인터페이스와 열거형

클래스서 다중 상속을 사용하지 않는 이유가 있다. A 클래스로 부터 B, C가 상속을 받고 D가 B, C를 상속받으면 다이아몬드 구조가 되어B, C가 동일한 A 클래스로부터 상속을 받았기에 둘이 같은 멤버, 메서드 중 뭔 골라야 할지 모호해지는 문제점이 존재한다. 또한 당연히 다중 상속을 하면 클래스 간의 계층 구조가 복잡해지며 일관성을 유지하기 위해 C#에서는 다중 상속은 지원하지 않는다. 인터페이스 클래스는 다중 상속이 안되지만 다중 상속을 지원하는 인터페이스가 있다.인터페이스는 클래스에게 "이렇게 구현을 해!" 라고 제시를 해주는 설계도일 뿐이고 실제 구현은 클래스에서 이루어진다. // 인터페이스 1public interface IItemPickable{ void PickUp();}// 인터페..

C# 2024.04.26

C# 고급 문법 및 기능

제네릭 코드를 하나만 짜놓고 다양한 자료형을 사용할 수 있게 해주어 재사용성을 높일 수 있음 의 키워드를 사용한다. 선언 시점이 아닌 사용시점에 자료형이 결정된다. 사용시에는 대신에 구체적인 자료형을 넣어줘야 한다. class Stack{ private T[] elements; private int top; public Stack() { elements = new T[100]; top = 0; } public void Push(T item) { elements[top++] = item; } public T Pop() { return elements[--top]; }}Stack i..

C# 2024.04.25

C# OOP와 클래스

객체 지향 프로그래밍(OOP)의 특징과 클래스와 객체에 대해 서술하는 시간을 가져볼 것이다. 객체지향 프로그래밍의 특징 캡슐화 관련된 데이터와 기능을 하나의 단위로 묶어 사용한다. 캡슐로 된 약을 생각해보자  두통약도 있고 해열제도 있고 진통제도 있을 것이다. 각자 해야할 역할(기능)에 따라 캡슐화했으며 캡슐을 부수지 않는 내용물을 볼 수가 없다. 캡슐화를 통해 정보를 은닉이 가능하고 외부에서의 직접적인 접근을 제한할 수 있는 것이며 만일 어떤 약에 문제가 생기면 각각의 것만 수정하면 되기에 각각의 안정성과 유지보수성을 높일 수 있다. 또한 기능 별로 묶여있기에 필요한 기능이 있다면 새롭게 구현하는 것이 아닌 포함만 하면 되는 것이다. 두통도 해열도 하고 싶으면 새롭게 만드..

C# 2024.04.24