일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- frontend
- RiotAPI
- Python
- AWS
- JSON
- jwt
- react
- bcrypt
- 게임
- express
- 스프링
- spring
- 깃
- 백준
- unity
- netlify
- c#
- 코딩
- springboot
- 파이썬
- 백엔드
- node.js
- 유니티
- 게임개발
- 스프링부트
- oAuth
- MongoDB
- IntelliJ
- OAuth2.0
- 프로그래밍
- Today
- Total
목록c# (15)
Unwound Developer
지난 주동안 레트로 유니티교재의 좀비 서바이벌 프로젝트를 만들었는데, 닷지나 달리기 게임보다 복잡한 기능들이 쓰였습니다. 일일이 전부 블로그에 기록하는 것보다, 프로젝트를 진행하며 유용할 것이라 생각이 들었던 기능이나 앞으로 자주 사용할 것 같은 것 위주로 기록을 해야겠어요. 작은 것들까지 전부 기록하려니, 오히려 안 좋은것 같습니다. 일단은 책 따라서 만든 프로젝트들을 수정하고 보완해봐야겠어요. 진짜 유저들이 플레이하기에는 미흡하고 너무 간단한 기능들만 구현되어있어서 정말 플레이할만한 게임으로 수정 해봐야겠습니다.
저는 저번 닷지 프로젝트처럼 발판 생성기를 두고 계속해서 랜덤으로 생성할 줄 알았어요. 하지만, 계속해서 발판을 실시간으로 생성하거나 파괴하는 Instantiate나 Destroy 메소드를 많이 사용하게 되면, 성능에 문제가 생길 수도 있다고해요. 그래서 이번엔 오브젝트 풀링이라는 기술을 사용한대요. 초기 실행시에 필요한 만큼 오브젝트를 생성하고, 필요할 때마다 활성화 한 뒤 가져와서 쓰는거에요. 그리고 필요 없을때는 파괴하는 대신 비활성화하고 풀에 반환하는거죠. 이렇게 생긴 플랫폼 프리팹이 제공되었어요. 가시는 밟으면 죽을거같네요. 플랫폼의 스크립트에요. 저 가시 세개를 배열로 가지고있고, 플레이어가 이미 밟은 발판인지를 판별할 bool타입 변수도 있습니다. OnEnable 메소드는 오브젝트가 활성화 ..
게임매니저 자체는 저번 닷지 프로젝트 때와 크게 다른게 없습니다. 그런데, 이번 게임매니저에는 싱글턴을 적용해요. 그 이유는 씬에 게임매니저 오브젝트가 여러개 생성되는것을 방지하기 위해서래요. 게임매니저 스크립트 내부입니다. static 변수는 여러개의 클래스 객체가 있어도, 변수를 공유하는 성질을 가지고 있어요. 그래서, 게임매니저 객체가 여러군데에서 생성되었어도 저 instance변수만은 같은 변수인거에요. instance가 null이 아니라면, 즉 이미 생성되어있다면 Destroy로 파괴해버리는겁니다. 한 개의 게임매니저만이 존재할 수 있게될거에요.
달리기 게임을 할 때 보통은 캐릭터가 앞으로 가는 것이 아니라, 지형과 배경이 캐릭터를 향해 오게해요. 그런데, 배경의 길이를 엄청 길게 정해놓고 배치하기는 불가능해요. 너무 길어요. 그리고, 지형도 일일이 다 설정해주기는 힘들거에요. 이번에 만드는 게임은 죽지 않는다면 무한대로 지형이 생성되어야 하거든요. 배경은 같은 배경이 계속 반복해서 나오는게 훨씬 효율적일거에요. 지형은 자동으로 생성되도록 할 겁니다. 똑같은 그림 두개를 붙여놓은겁니다. 1번화면부터 지나가다가 1번화면이 다지나가면, 1번화면을 다시 2번화면의 뒤에 붙이는 거에요. 이렇게하면, 그림 두장으로 무한히 배경을 지속할 수 있겠죠.. 일단 오브젝트들이 캐릭터를 향해 오도록 할게요. 왼쪽을 향해 초당 10의속도로 움직일거에요. 이건 배경을 ..