게임개발342 유니티5 독학하기 그 95.2번째 걸음-메모리 풀링의 발사체 적용 part3 안녕하세요? 그리 긴 작업이 아니기는 했지만, 그래도 어느정도 하느라 애를 먹었던 작업인 메모리 풀링을 적용해서 발사체-레이져를 발사하는 작업을 이제 마무리 할 때가 왔습니다. 먼저 유니티5의 계층뷰에서 Player 오브젝트를 선택해 보도록 합니다. 그리고 나서 메모리 풀에 얼마나 많은 발사체-여기서는 레이져의 프리펩을 만들어 줄 것이냐를 정합니다. 일단 10으로 저는 정해서 입력을 해 주었습니다. 그런데 문제가 발생했습니다. 어떻게 된 것인지 레이저가 아랬쪽 방향으로 발사가 되는 것을 확인할 수 있었습니다. 그래서 어디가 문제인가 봤더니, 제가 조작을 하면서 쓸데없이 BulletSystem의 회전을 -90 한번 더 시킨 것이였습니다. 그래서 여기는 0으로 만들어 놓았습니다. 이제서야 제가 원하는 방향으.. 2018. 10. 28. 유니티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. 유니티5 독학하기 그 95번째 걸음-총알 발사의 구현part4 안녕하세요? 지난번 포스팅에서 어떻게 총알이 발사는 되는데 제자리에만 머무는 것에만 있는 것을 보여 주었습니다. 그래서 이번 포스팅에서는 본격적으로 발사체가 원하는 방향으로 발사시켜 보도록 하는데, 이런저런 시행착오가 있어서 이를 포스팅 하고자 합니다. 작업을 하기 위해서 이번에는 BulletMove.cs라는 스크립트를 Scripts폴더에서 생성을 하도록 합니다. 우선 위 스크린샷처럼 여기서 진짜로 총알의 속도와, 총알이 얼마만큼 이동을 했으면 사라질 것인지 변수로 선언을 해 주고, 다음으로는 Translate() 함수를 써서 원하는 방향으로 가도록 한 다음에, 총알의 좌표가 bulletDisapparPoint보다 더 크면 Destroy()함수를 호출해 주도록 합니다. 처음에는 일단 BulletLocat.. 2018. 10. 26. 이전 1 ··· 70 71 72 73 74 75 76 ··· 86 다음