본문 바로가기

Coroutine

유니티 - 탄막 슈팅 게임을 만들자 (5), 프레임 드랍을 해결하기. 안녕하세요, 윈디입니다. 지난번에 탄 삭제를 하도록 만들때, 이벤트와 델리게이트를 사용해서 탄을 삭제하는 방법을 사용해서 탄을 한번에 삭제를 했었는데요,그 이후 저는, 탄을 삭제하고 아이템으로 변한 탄들이 플레이어에게 점수로 들어가는 식으로 구현을 했었습니다.이렇게 탄을 한 프레임에 모두 삭제를 하다보니까, 순간적으로 렉이 발생하더라구요.이 렉을 해결하기 위해서는 당연히 정확한 원인을 파악해야겠죠?유니티의 프로파일러를 돌려서 확인해 보았습니다. 프로파일러는 유니티의 Windows 메뉴에서 확인하실 수 있습니다. 단축키는 컨트롤+7 입니다.프로파일러를 킨 상태로 게임을 실행하면 자동으로 Cpu 사용량이 기록이 됩니다.그래서 보스를 죽이는 시점을 확인해 봤더니..이렇게 나왔습니다. 토탈 64퍼센트나 차지하는.. 더보기
유니티 (C#스크립팅) - 코루틴이 잘 안 돌아가는 경우들 정리 안녕하세요? 윈디입니다.유니티 내부에서 코루틴을 사용하다 보면, 코루틴이 잘 작동하지 않을 때가 종종 있습니다. 특히, 오브젝트가 삭제되거나 비활성화되거나, 혹은 스크립트 사이를 넘나들며 코루틴을 사용하다 보면, 코루틴이 잘 작동하지 않을 때가종종 발생하는데요, 그래도 미리 알아두고 사용하다 보면 이런 오류들을 최대한 피하거나, 아니면 오류를 발견했을때 재빨리 해결할 수 있겠다는 생각이 들어서 제가 이번 게임을 코딩하면서 접한 몇 가지 오류들을 정리해 봤습니다. 일단 코루틴을 사용하는 이유는 원하는 만큼 스크립트를 쉬게 하여 연산에 큰 이득을 얻기 때문인데요,코루틴의 개념 자체에 대해서는 여기에 포스팅 해 두었으니 참고해 보시는것도 좋을 것 같아요. http://linecode.tistory.com/9 .. 더보기
유니티 - 탄막 슈팅 게임을 만들자(1), Sin(),Cos()과 Mathf 의 사용 안녕하세요, 윈디입니다!오늘은 처음으로 보스가 탄막을 뿜어내도록 만들었습니다.지난번의 보스 패턴 구현에서 연장선상이 되겠네요. 이러한 탄막을 구하기 위해, 구현해야 하는 두 가지의 파트를 먼저 살펴보겠습니다. 첫번째는, 탄막을 '쏘는' 보스에서 구현해야 할 부분. 두번째는, 탄 자체가 움직이거나, 혹은 시야 범위에서 사라진 탄이 삭제되기 위해 필요한'탄' 내부에서 구현해야 하는 부분이 있겠습니다. 탄을 쏘는 보스의 부분부터 살펴보도록 하지요.탄을 원하는 방식대로 쏘도록 코루틴을 만들어서, 원하는 타이밍에 실행해줄 수 있도록 하면 되니까요.저는 시작하는 시점에 저런 탄을 생성할 수 있도록, SpellStart() 코루틴을 만들었습니다. IEnumerator SpellStart() { float angle .. 더보기
유니티(C#스크립팅) - 코루틴. 코루틴. Coroutine의 이해. 안녕하세요, 윈디입니다! 오늘은 코루틴의 개념에 대해서 좀더 자세하게 이해하게 되어서, 정리할 겸 글을 쓰게 되었네요.오늘 배운 내용으로 게임에 필요했던 메인 화면의 동작을 코루틴을 이용하여 제작해 보기도 했구요. 코루틴이란?Coroutine, 같이한다는 뜻의 접두사 Co와 작업을 뜻하는Routine의 합성어라고 할 수 있겠죠. 같이 하는 일. 그러니까 유니티에서 코루틴이란 간단히 말하자면 코루틴을 호출한 함수와 해당 코루틴이 같이 협동해서 문제를 해결하는 구문이란 뜻인 겁니다. 코루틴은 항상 실행되는 것이 아니라 필요한 상황에서만 발생시킬수 있다는 점에서 매 프레임 실행되는 Update문보다 훨씬 강력하고 효율적인 기능을 발생시킬 수 있죠. 간단히 생각해서, 유니티에서 사용하는 여러 스크립트의 많은 U.. 더보기
유니티 2D UI - 대화창 구현하기! - SetSiblingIndex 와 이미지 순서 유니티 수업을 들으며 혼자서 진행하고 있는 프로젝트 입니다.2D슈팅게임이 목표엿는데요, 슈팅게임을 하다 보면 당연히 대화가 필요한 시점도 나오겠죠. 그래서 오늘은 한번 대화창을 제작해 보았습니다! ▲최종 결과물이라고 생각해 주시면 되겠습니다. (Gif 파일은 이상이 없는데 올리는 과정에서 뭔가 문제가 생기는지 화면이 자꾸 깨지네요) 1. 계획 세우기 단계. 대화창을 제작하기로 결정한 후, 대화창에 넣기로 한 필요 기능들은 다음과 같았습니다. ⓐ 사용할 때 해당 판넬이 앞으로 돌아나오며 하이라이트를 받도록 조정, 대화의 대상이 되는 1개 캐릭터만 제외하고 RGB컬러를 어둡게 맞춰주는 상태 (미세값 조정 예정 : RGB전부 대략 77정도가 적절해 보임) ⓑ 캐릭터 판넬은 1 판넬당 1캐릭터의 초상화를 표시하.. 더보기