본문 바로가기

삽질의 기록

(3)
[Unity] 에디터에선 문제 없지만 빌드하면 안 될 때 Zenocide 출시를 위해 시험 공부도 미루고 마무리 중인데, 큰 문제가 발생했다. 위는 로비에서 불러오기를 눌렀을 때 뜨는 화면이다. 우측의 로딩 화면이 나타난 후, 좌측처럼 진행하던 스토리를 그대로 띄워야 한다. 그런데, 에디터에선 잘 되는데 빌드만 뽑으면 씬이 멈춰버렸다. 이번엔 그 해결 과정을 기록해보고자 한다.대체 뭐가 문젠데?우선, 도저히 감을 못 잡겠어서 Chat-GPT를 이용해 문제 발견에 나섰다. 아래는 GPT와 나눈 대화 중 일부다. 나에디터에선 데이터 로드 후 씬 전환이 잘 되는데, 빌드 후 실행해보면 로딩 화면에서 멈춰. BGM이 제대로 나오는 걸보면 씬은 넘어간 것 같아. 어떤 증상일까? GPT빌드 후 로딩 화면에서 멈추는 증상은 일반적으로 비동기 로딩, 리소스 접근, 또는 스크..
[C++] 소인수분해: 두 소수 p, q의 곱 n이 주어질 때, p, q 알아내기 이 사람은 왜 이런 짓을 했는가? 시험 기간인데 시험 공부는 하기 싫어서 간단한 알고리즘을 짜봤다. 문제 RSA 알고리즘을 배울 때 꼭 한 번씩 들어보는 말. 두 소수 p, q가 주어졌을 때 n을 계산하는 건 매우 단순한 일이지만, 두 소수의 곱 n이 주어졌을 때 p, q를 알아내는 건 NP 문제다. 그래서 어떻게 하면 n이 주어졌을 때 p, q를 빠르게 알아낼 수 있을까?라는 질문이 샤워 도중 떠올랐고, 샤워하면서 한 생각을 코드로 옮겨봤다. 알고리즘 거창한 문제에 비해 내 생각은 단순했다. twosum 문제를 좀 응용하면 되지 않을까? 정확한 사고 과정은 아래와 같았다. 두 소수 p, q를 곱한 n이 있다면, p와 q는 sqrt(n)에서 비슷하게 떨어져 있지 않을까? 3 * 13, 7 * 13을 해봄..
[Unity] UI Text 가비지 제거, 삽질의 기록 ※ 해당 글은 ToString()으로 인해 발생한 가비지를 제거하려는 시도로, 삽질이 많습니다. 결론은 3. 결과부터 참고하시면 됩니다. ※ 테스트 시 자주 프레임 드랍이 되는 것을 목격하고, 유니티 프로파일러로 분석하고 있었다. 원인은 자주 일어나는 가비지 콜렉터 실행. 프로파일러로 가비지가 쌓이는 부분을 추적했다. void UpdateScorePanel() { scoreText.text = GameManager.Instance.score.ToString(); } 해당 함수의 내용은 위와 같았다. int값인 score를 ToSting()으로 변환시킬 때마다, 가비지가 생성된 것. 이 함수는 플레이어가 점수를 얻을 때마다 실행되므로, 계속된 플레이 시 부담이 클 것 같았다. 그래서 이 부분을 없애보기로 ..