본문 바로가기

메모리 풀2

유니티5 독학하기 그 95.2번째 걸음-메모리 풀링의 발사체 적용 part2 안녕하세요? 지난번 포스팅에서 메모리 풀링을 적용 하려고 하는데, 내용이 너무 길어서 중간에 끊었습니다. 이번 포스팅에서도 모든 내용을 다 포스팅 할수는 없어서 중간에 끊겠지만, 그래도 될 수 있는한 이해하기 쉽도록 하면서 이러저러 했던 시행착오를 기록해 보도록 하겠습니다. 우선 지난번에 만든 BulletCreate.cs 스크립트의 GunFire()메소드에서 위 스크린샷처럼 for문을 삽입해 주도록 합니다. 이 for문은 메모리풀에 저장할 최대한의 발사체-이 경우에는 레이져 빔의 갯수인데, 레이져 빔의 갯수 이상은 만들어 지지 않도록 해주는 역할을 할 수 있다고 볼 수 있습니다. 다만 한번 발사 명령을 내렸을 때, 10개가 최대한도면 모두 10개 발사되는 일이 없도록 for문에서 break; 가 있는 것.. 2018. 10. 28.
유니티5 독학하기 그 95.2번째 걸음-메모리 풀링의 발사체 적용 part1 안녕하세요? 지난번 포스팅에서 어떻게 발사체로 레이져가 나가는 것을 구현하는 데 성공했지만, 여기서 하나 심각하게 만들 수도 있다는 문제가 하나 있습니다. 일반적인 방법에서는 총알과 같은 발사체를 발사하는 명령이 내려지면, initiate()함수를 이용해서 총알을 생성해서 날리다가 일정 시점이 되면 Destroy()함수를 호출해서 생성된 발사체를 제거하라는 명령을 내려줍니다. 그런데 듣자니 이 유니티의 스크립트에서 사용하는 C#이라는 언어에서는 '가비지 컬렉터 = CG'라는 것이 있는데, 제가 알아본 바로는 물체가 제거되면 메모리에서 자동으로 제거해 주는 장치라고 합니다. 문제는 Destroy()함수가 호출이 되면, 바로 직후에 CG가 불려오는데, 이 CG를 너무 많이 호출하면 시스템에 많은 부하가 걸려.. 2018. 10. 27.