어느 문법에서 막히는지 찾아야한다!
사고하는 방식을 바꿔야한다.
적어도 문법 때문에 어려워하면 안된다.
만약 어려운 문법이 있다면, 어느 문법이 어려운지 파악하고 계속 사용을 해봐야한다.
23.03.29. 5교시 수업 재복습하면 좋다.
인디 게임이라면 소규모 프로젝트라서 남에 기술을 가져와 빠르게 개발이 필요한데 Unity asset store을 이용하게 된다. 그럼 어떻게 Assets을 만들고 사고 팔수 있을까?
그것은 아래 방법으로 진행하면 된다.
지금까지 공부해온 내용이 헛된 것이 아니다. 단계 단계 올라가면 된다.
지금까지 많은 시간을 투자했고, 허투로 쓴적이 없다.
한 번만에 모든 것을 파악하는 것은 불가능하다.
일단 모르더라도 들어라. 그러면 나중에 다시 들었을 때, 이해가 될 것이다.
한 번 들으면 머릿속에 양분이 남아 나중에 큰 도움이 될 것이다.
교수님이 가르쳐주신 내용을 완벽하게 이해하려고 할 필요가 없다.
하다보면 교수님이 왜 이렇게 가르쳤는지 자연스럽게 습득하게 될 것이다.
두려워 하기 보단 지금 갖고 있는 지식으로 버무려서 시도를 하는 것이 중요하다.
기분이 나쁠 때 빠르게 기분을 좋게 만들 루틴을 고민해보자.
술마시는 거 말고ㅡㅡ
메모리는 크기와 주소가 전부다!
컴퓨터 동작원리 파트는 정리가 되어있어야 한다.이 내용을 깊이 이해하고 있어야 최적화 할 때 도움이 된다.
버전관리 시스템을 통해 이력 들을 잘 관리해야 합니다.
프로젝트를 잘 관리하기 위해 시각화를 잘 해야되고 칸반보드를 배웠다.(.3.28.)
칸반보드에 핵심은 한 번에 한 번 작업을 하자. 일감들을 잘 분류해야 내 프로젝트가 어떻게 진행되고 있는지 한 눈에 들어오게된다.
브랜치를 잘 관리하기 위해 github-flow를 배웠다.
커밋 메시지는 명확하게 인지할 수 있게 만들어줘야한다.
그래서 커밋을 하기 전에 리팩토링을 하는 것은 필수다.
C# 때 배운 것은 결국 ‘문법’이다.
우리의 생각을 표현하기 위해선 문법을 명확하게 알아야한다.
문법은 그냥 암기다.
내 생각을 구현하기 위해서 필요한 것은 ‘사고 전환’이다.
인간은 추상적으로 사고하는 것이 발달 되었다. 이거, 저거, 그거로 대화가 되지만 컴퓨터는 불가능하다. 명확하게 데이터를 알려주어야지 대화가 된다.
그래서 우리는 컴퓨터와 대화하기 위해선 사고 전환이 필요하다.
사실 if, for문으로 프로그래밍 가능하다. 하지만 프로그램 크기가 커지면 if문과 for문 만으로는 가독성도 떨어지고 효율도 낮아지니 모듈화부터 시작해서 다양한 개념들을 배운 것이다. 깊게 파고 들면 if 와 for문이 나타나게된다.
모듈화니, 객체지향이니, 상수, 상속 등등 코드를 편하고 가독성 좋게 만들기 위해 사용하는 ‘도구’에 불과한 것이다.
체계적으로 프로그래밍을 하고 싶다면 ‘프레임 워크’가 필요하다.
소코반을 배우면서 프레임 워크에 대해 간략하게 배웠다. 그렇지만 코드가 점점 길어지는 것을 느꼈고, 모듈화를 통해 코드의 길이를 줄이고 가독성을 높여야 되는 점을 깨달았다.
.NET
Build : 소스 코드를 갖고 프로그램을 만드는 과정
C# => IL => Assembly
CLR이 어셈블리를 실행한다.
IL => Platform - specific Code
JIT : 실행 중에 조건을 만족하는 IL코드를 대상으로 컴파일을 진행하는 것이다. 인터프리트 과정 생략
AOT : 실행 전에 IL 코드를 모두 플랫폼 특정 코드로 변환한다.
소설책이 개행되지 않고, 문단만 있다면 어떨까?
코드도 마찬가지다. 그래서 모듈화가 필요하다. 모듈화에 방법은 함수와 class가 있다.
함수만으로도 어느정도 모듈화는 가능하다.
함수를 호출하게 되면은 함수에 작성된 모든 코드를 실행한 후에* 호출했던 지점으로 다시 돌아오게 된다. 그게 가능한 이유는 '스택 프레임'이 존재하기 때문이고, 스택 프레임과 관련해서 알아둬야 할 것이 호출 규약이다.
*Unity에서 모든 함수를 다 호출하지 않고 내가 원하는 지점만 호출하고 다시 복귀하게 만드는 '코루틴'에 대해서도 배웠다.
함수도 인수로 넘겨주겠다!
Unity에서 Awake, Start도 콜백 함수다. Unity엔진에 의해서 호출하니까
기획자와 소통을 할 때 큰 도움이 된다.
기획자는 유니티를 잘 다룰 일은 거의 없다. 아예 모를 수도 있고.
기획자는 엑셀로 기획을 만들어 개발자한테 건내고, 개발자는 그것을 토대로 작업을 한다다
그래서 교수님은 데이터와 로직을 분리해놓으라고 했다.
데이터는 언제든 바뀔 수 있으니까!!!!! 꼭 분리를 해야 한다.
로그(log)를 알아야한다. 필수적으로!
Unity는 JsonUtility를 지원한다.
객체지향과 관련된 문법을 배웠다.
핵심은 다형성이다. 객체지향 설계는 ‘다형성’을 위함이다.
절차지향은 조건문을 사용하는데, 이 조건문을 보기 싫은 사람들이 객체지향 설계를 개발했다. 즉, ‘다형성’은 조건문을 가상 함수로 만든 것이다.
공통적인 부분을 만드는 것을 추상화라고 한다.
절차 지향 방식은 아래처럼 만든 것이다.
객체지향 설계는 FSM(유한 상태 기계)을 생각해보면 된다.
그리고 디자인 패턴은 로직하는 방식이 개개인마다 다르다.
그 이유는 응용에 영역이기 때문이다. 그래서 ‘암기’만으로는 디자인 패턴을 사용하기 어려울 수 있어, 암기하고 숙달하고, 응용해봐야하는 영역이다.
디자인 패턴은 어디서 사용해야되는지를 알고, 어떤 효과를 기대할 수 있는지를 파악하고 사용하는 것이 중요하다. 내가 편하다고 싱글톤을 무지막지하게 사용하면 안되는 것 처럼!
객체지향 설계는 역으로 분석해야한다.
FSM을 역으로 분석해보자.
전처리를 처리하고, 컴파일이 진행된다.
코드에다 메타 데이터를 삽입
유니티에서 Rigidbody2D를 컴포넌트에 추가했는데, Collider를 추가하려고 하면 오류가 발생한다. 그 이유는 특성으로 서로 묶어 놓았기 때문이다.