계속 스탯시스템을 설계하고 있는데 한가지 의문(호기심 측면에서의)이 생겼다.


스텟의 증감에는 

적용시점부터 풀타임으로  활성화되는 증감이 있고

적용시점부터 조건부로 살아있는 증감이 있다

 - 조건부로 살아있는 증감엔

   -> 활성화 상태(아이템, 패시브 스킬등이 여기에 해당)에 따른 활성

   -> 특정 시간내에 활성-시간이 만료되면 소멸


이 중 특정시간내에 활성-만료시 소멸되는 녀석들에 대해

의문이 들기 시작한 것인데


나는 이 활성-소멸을 코루틴으로 관리할 생각이다.

 *코루틴 : IEnumerable을 이용해 구현된 일종의 메소드 형태이며, 유니티에서 동시성 제어에 쓰인다.

            이를 이해하기 위해선 yield return에 대해 먼저 알아야 한다.

            궁금한 친구들은 직접 찾아보도록.

           간략히 설명하자면, 메소드 내에서 리턴된 시점을 기억했다가, 다시 돌아가 실행 할 수 있는 메소드라고 보면된다.

           내 어휘력과 표현력은 좆구리니까, 궁금하면 직접 찾아보도록. 좋은글이 많다

          https://gamecodingschool.org/2015/05/16/코루틴coroutine-이해하기/


       

        내가 직접 작성했던 코루틴이다.

        대충 설명하면, 현재체력이 최대체력보다 낮을때, 체력 재생량 만큼 현재체력에 더해준다.

        회복시킨뒤 1초간대기를 한다.

        이런 흐름의 코드이다. BaseStat CurrentStat이지랄 난건 곧 수정할 시스템이라.. 크게 신경쓰지말도록


 *Delegate : 함수포인터라고 보면된다.

               메소드를 등록시킬수 있는 주소공간이며, 여러 메소드를 등록할 수 있고,

               delegate를 실행시키면 등록시킨 메소드가 순차적으로 실행이 된다.

               역시 궁금한 친구는 한번 공부해보도록.



시간만료형태의 스탯증감을, 코루틴으로 처리를하면 최초에 증가 되었던 값(혹은 감소되었던 값)만큼 만료직전에 되돌려주는게 가능하다 생각했다.

근데 이 코루틴도 일종의 메소드니까 델리게이트에 참조 시킬수 있지 않을까?그래서 실행관리를..

하고 생각했는데


일단 내가 내린결론은 불가능이다.

코루틴도 메소드의 일종이지만, 내가 공부한 바에 의하면 StartCoroutione 메소드를 이용해'서만' 실행 시키고,

마찬가지로 StopCorutione을 통해서 멈출수 있다고 학습했다.

(심지어 이 둘 조차, Delegate라고 본거같기도 아닌거같기도..)



 난 좆같은 설계를 하면 좆대는걸 많이 봐오고 겪어봐서...

설계에 엄청 중심을 두고 접근하고있다.


유니티는 취미삼아서 하고있는거긴 하지만 그래도 재밌어서 하는거니까