- 서론 -
(대충 글 다쓴거 날려버렸다는 내용)
(대충 지하밸트, 분배기 싹다 갈아업고 다시 만들었다는 내용)
- 본론 -
밸트에 값설정이 가능해졌다.
값이 잘 변하는지 테스트하려는데 로그만 볼까 하다가
어차피 맞을매는 빨리 맞는게 낫다고 나중에 만들꺼 지금 만들어 봤다.
위사진은 밸트의 값설정을 위한 팝업창 이미지이다.
지금 UI는 좀 보기 흉하지만 나중엔 좀 새련되게 바뀔 것이다
구성은 미리보기 이미지와 좌표값과 가로 스크롤 두개로 되어있다.
위 스크롤은 왼쪽라인의 아이템 리스트, 아래 스크롤은 오른쪽 라인의 아이템 리스트 이다.
플러스 버튼을 누르면 값을 추가할 수 있는 블럭이 하나가 더 추가된다.
디폴트 값으로는 가상의 아이템 "testitem"으로 설정해놨다.
블럭의 왼쪽 아래에는 값을 입력해서 '초당 옮기는 수'를 입력할 수 있다. (디폴트 값 = 1)
블럭의 오른쪽 아래 X버튼을 누르면 블럭이 삭제된다.
(X키를 눌러 블럭을 삭제하십시오)
(테스트 움짤이 안보인다면 클릭해서 볼것)
움짤을 보면 알겠지만 링킹되어 있는 밸트는
자신의 값을 앞에있는 놈과 동기화 하려고 한다.
(물론 T자 모양으로 바뀌면 알고리즘도 바뀐다.)
여기서 주의해야 할 점이 하나 있는데 움짤과 같이 중간에 또 다른 값을 추가하면
다음 부분은 동기화 되어있지만 그 뒷부분은 동기화가 안되어 있다.
버그가 아니라 투입기나 분배기같이 중간에 밸트값을 수정하는 놈들과
사용자가 직접 값을 수정한것이 같은 매커니즘을 가지도록 설계한 것이다.
만약 설정값중 중복된 아이템이 있다면 값을 합쳐서 보여준다
노랑밸트의 최대 초당 옮기는 수는 0.17 버전 기준으로 15이다 즉 한라인당 7.5f 이다.
따라서 노랑밸트의 한라인의 입력값은 최대치값인 7.5를 넘기지 못하도록 해놓았다.
이정도 테스트와 디버깅 정도면 충분한것 같아서 분배기랑 지하밸트 테스트로 넘어가려는데
문제점이 하나 발견되었다.
바로 밸트의 동기화 무한 루프이다.
이 새끼가 초기화 문제의 주 범인이였다
이걸 해결할때까지 꽤 시간이 많이 걸렸다.
많은 시도와 많은 실패를 겪으며 좌절에 빠졌었는데
이 문제를 해결할 방법을 생각해낸 계기가 아직도 인상깊다.
수학 강의때 샌드위치 정리 이용해서 풀어야 되는 미분문제가 하나 있었는데
풀다가 갑자기 이거다 싶더라고
먼저 밸트의 자료구조를 링크드 리스트에서 더블 링크드 리스트로 바꾸었다
동기화 중에 앞 밸트의 값과 뒷 밸트의 값이 같으면 현재값을 그 값으로 하고
앞 밸트를 동기화를 안해주는걸로 해서 루프를 멈추는데 성공했다.
하지만 이미 문제를 해결하고 나니깐 벌써 주말이 끝나 가더라
투입기도 대충 짜놓고 테스트랑 그래픽 작업 둘다 하나도 진행 못했는데...
- 결론 -
1. 분배기 지하밸트 다시 프로그래밍함
2. 밸트 99퍼 완성함
내가 좀 더 프로그래밍 실력이 좋았으면 해
그럼 이런 문제는 금방 해결할텐데
윾니티 2년 공부따리로는 아직도 실력이 부족하더라
다음주 목표
1. 분배기랑 지하밸트 테스트
2. 투입기 테스트 및 그래픽 작업
3. (대충 다음주까지 못하는 목표)
대충 질문 받겠다는 댓글 - dc App
뭔소린진 모르지만 개추
대충 기대한다는 댓글
대충 같은 컴공이라 힘내라는 글
음 유니티에 그리드랑 타일맵 클래스 있는거 쓰는게 좋을거 같은데
https://docs.unity3d.com/Manual/Tilemap-CreatingTilemaps.html
처음 개발 시작할 때는 타일맵 사용하려고 했었음 배치 시스템 설계하기 편해보여서 근데 애니메이션 컨트롤이 좀 복잡해진다는 점과 개발초기때 썼던 유니티 버전에 투명 팔레트 버그가 있어서 직접 그리드 설계한건데 최근에 2019로 업데이트 했으니까 타일맵 시스템으로 바꿀 생각은 있음 - dc App
오 아직까지 하고있네
배경 필셀 밀린거 불편하네