작성일 03.15
수정일 03.20
작성자 유호진
Buff/Debuff의 구현 사양
Buff/Debuff는 일정 시간 동안 지속적으로 특정 효과를 일으키는 것으로,
일반 버프/디버프
스택형 버프/디버프
주기적으로 동작하는 버프/디버프
트러블 슈팅
버프가 중복되지 않도록 BuffID를 사용하는 김에 이를 관리하기 편하도록 Dictionary<int, Buff>를 사용하고자 하였다.
그리고 매 Update마다 Buff의 시간을 갱신해주는데, 시간이 다 된 버프는 당연히 Dictionary에서 삭제 되어야 했다.
그런데 잘 돌아갈 줄 알았던 코드에 에러가 발생했으니,
반복문을 통해 Collection을 조회하는 도중에 Element를 조회하면 정상적으로 순회가 되지 않는다는 에러였다.
그래서 List를 하나 더 두어 시간이 만료되어 사라질 버프의 목록들을 가져오고, Dictionary의 순회 이후에 시간 만료 이벤트를 발생하게 하였다.