STUDY(39)
-
[C#] DateTime
게임에서 일일 보상과 같이 특정 시간이 지났을 경우 리셋되는 아이템들이 있는데, 이를 위해 reset time을 지정해둔다. (몇시에 초기화 될건지)var addDay = serverTime 하루가 지난 날짜를 확인하기 위해 addDay를 추가하여 + 해주는 것을 알 수 있다. 하지만 이렇게 직접 넣게되면 문제가 발생한다. 작성일인 10월 31일의 경우 +1일을 하면 32일이 되며 에러가 발생한다. 따라서 직접적으로 넣기보단 다음과 같은 방법이 좋다.var addDay = serverTime AddDays() 함수를 사용하면 위와 같은 경우가 발생할 경우 자동으로 11월 1일로 변환해준다.
2022.10.31 -
[C#] for문에서의 Action()과 클로저(closure)의 개념
for문에서의 Action액션을 만들어두고 특정 이벤트가 발생했을때 실행되도록 하는 경우가 있다. 대표적인 예로 버튼클릭액션이다. 만약 이때 어떤 변수를 넣어줘야 할 경우, 등록하는 순간의 값이 아니라 실제로 실행되는 순간에 변수가 들어간다. Slots[0].ClickAction(() => ShowNavigationPopup(type1, value1));위처럼 확실한 값을 넣을 경우에는 문제가 생기지 않는다. 그런데 아래와 같은 경우에는 어떻게 될까?for (int i = 0; i ShowNavigationPopup()); }의도는 다음과 같을 것이다. 해당 _uiBattlePassRewardSlots[]에 reward_type과 reward_index값을 가진 클릭 액션이 발동되도록 하는것.하지만 이..
2022.10.29 -
디버깅모드로 전환시 멈추는 현상
작업을 하다보면 갑자기 이곳저곳에서 중단점을 걸어두고 굳이 해제를 안한채로 이곳저곳에서 작업을 계속 진행하는 경우가 발생한다. 문제는 유니티에서 오래된 버그가 있다는건데, 중단점을 걸어두고 디버깅모드를 하면 멈춘다고 한다. 체감상 중단점을 걸어두면 걸어둘수록 느려진다는 느낌을 받았는데, 이게 이 영향일지도 모른다.해결방안 : 모든 중단점 해제 후 유니티 연결을 하면 정상적으로 동작한다. 문제는 중단점을 다시 걸어야한다는 것...https://forum.unity.com/threads/unity-freeze-when-connecting-vs-debugger.529863/ Unity Freeze when connecting VS DebuggerHey Guys. Since three days, i have ..
2022.10.06 -
개발자로써 커리어를 쌓으면서 느낀 점
1. 의도를 눈치채라예를 들어 접근제한자가 public으로 선언된 경우도 있을 것이고 private으로 선언된 경우도 있을 것이다. 단순하게 생각해보면 외부에서 가능하냐 못하냐로 나뉠 수 있지만, 깊은 뜻은 이것을 선언한 개발자가 '해당 변수는 외부에서 사용하지 않았으면 좋겠다.' 라는 의도가 담긴 것이다. 큰 틀에서 보자면, 코드를 구성할때 어떤 목적을 가지고 만들 것인가를 생각하면서 개발해야 한다. 2. 근거를 확실하게 하라학창시절에는 돌아가게끔만 구현해도 오케이였다. 그래서 버그가 왜 발생하는지등을 완벽하게 파악할 필요가 없었다. 그러나 현업에서는 다르다. 이슈하나를 처리하더라도 해당 이슈에 대한 분석을 확실하게 해야 사이드이펙트를 막을 수 있다. 만약 적당히 분석하고 이렇게하면 되겠지~ 하면 반드..
2022.09.28 -
객체 지향 프로그래밍이란
[객체 지향]객체 지향 프로그래밍이란?(OPP : Object Oriented Programming)객체 지향 프로그래밍은 컴퓨터 프로그래밍 페러다임 중 하나로 프로그래밍에서 필요한 데이터를 추상화시켜 상태의 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 말 그대로 객체 지향은 기능이 아닌 객체가 중심이 되어 "누가 어떤 일을 할 것인가?" 가 핵심이 된다. 즉 객체를 도출하고 각각의 역할을 정의해 나가는 것에 초점을 맞춘다.객체 지향에 대한 이해를 위해 절차 지향 프로그래밍과 비교하면서 설명하겠다.객체 지향 프로그래밍은 객체가 중심이 된다면 절차 지향 프로그래밍은 무엇이 중심이 될까?절차 지향은 기능 중심으로 바라보는 방식으로 "무엇을 어떤 절..
2022.08.17 -
C# GC(Garbage Collector) 가비지 컬렉터
[GC(Garbage Collector)]C#에서 객체 생성 시 메모리 할당 방식-> 첫 영역부터 차곡차곡..-> 메모리 할당이 가능한 영역을 찾는 과정이 없기 때문에 속도가 빠름 *C#에서 GC에 의한 메모리 해제 방식GC Root 라는 것이 있다. 루트는 힙에 있는 객체를 가리키는 참조를 말한다.-> 여기서 a가 루트 루트 목록을 순회하면서 루트가 참조하는 힙 객체와 관계를 조사한다. 어떤 루트와도 관계가 없다면 쓰레기로 간주한다쓰레기 객체가 차지하는 메모리는 해제한다.남은 객체들은 다시 비어있는 공간에 재배치 시켜준다.위 과정이 GC의 큰 틀이다. C#은 메모리 관리를 용이하게 하기 위해 세대별 GC를 지원한다. 그 이유는 아래와 같다.GC는 파편화를 방지하기 위해 메모리를 압축하는데 한번에 전체를..
2022.08.17