posted by REDFORCE 2018. 12. 20. 02:25

#02.JobRepeatManager - 01


-----------------------------
01번 글에 이어서 적어갑니다.

여기서는 먼저 JobRepeatManager에서 Base 오브젝트 역할을 담당하는 JobRepeatBase에 대해서 설명하겠습니다.


1. class JobRepeatBase

JobRepeatBase는 Monobehaviour를 상속한 GameObject 로써 JobRepeatManager에서 생성 및 관리 되어지는 클래스 입니다.


JobRepeatBase 는 다음과 같은 멤버변수를 갖고 있습니다.

 형태 및 이름

 설명

 public string key


 - Job이 생성 될 때 등록되어질 이름(Key) 값 입니다.

 - GameObject로 생성 될 때의 name과 동일합니다.


 public float repeatDelay


 - 반복 형태의  Job일 경우 Delay Time(Second)입니다. 


 public int repeatCount


 - 반복 형태의 Job 일 경우 반복할 횟수 입니다.

 - 이 값이 0 이면 무한 반복합니다.


 public int executeCount


 - 현재 까지 수행한 반복 횟수 값 입니다.

 - executeCount 가 repeatCount 보다 커지면 자동으로 Job이 드랍됩니다. (repeatCount 가 0 이면 무한 반복합니다)


 public IEnumerator jobCoroutine


 - Job을 수행함에 있어 Delegate 형태뿐만 아니라 Coroutine으로 돌리고 싶은 경우 이용할 수 있는 IEneumerator 입니다.

 - JobTodo 보다 우선시되어 수행됩니다.

 

 - 아직 연구중인 Coroutine 구조 입니다.
  (사용하지 않기를 추천)

 

 

 public JobTodo


 - 원형)
 public delegate void JobTodo ( params object[] param)


 - 수행할 내용이 들어갈 수 있는 Todo delegate입니다.

 - Job을 반복적으로 수행할 때의 수행시킬 내용을 여기에 넣으면 됩니다.


 public JobEndAction


 - 원형)

 public delegate void JobEndAction( params object[] param)


 - 모든 반복횟수를 마무리 한 후 Job이 Drop되기 직전 호출되는 JobEndAction Delegate 입니다.

 - Drop 되기전 한 번 호출됩니다.

 - null 일 경우 아무것도 하지 않습니다.


 public JobTodoCondition


 - 원형)

 public delegate bool JobTodoCondition( params object[] param)


 - 반복 수행함에 있어 JobTodo를 실행하기 전 수행(Execute)할 것인지 말 것인지 조건을 넣기 위한 Delegate 입니다.

 - JobTodoCondition에서 return true 일 경우 JobTodo를 수행합니다. return false 이면 JobTodo를 호출하지 않습니다.

 - null 일 경우 무시됩니다.


 public JobAutoDropCondition

 - 원형)
 public delegate bool JobAutoDropCondition( params object[] param)


 -  Job이 반복 수행되어지다가 자동으로 중단되기 위한 조건을 넣을 수 있는 Delegate 입니다.

 - JobAutoDropCondition에서 return true 일 경우 Job이 드랍(Drop) 됩니다. return false 일 경우 무시합니다.

 - null 일 경우 무시됩니다.


 public JOB_STATE


 - 현재 Job의 상태를 표현하는 값 입니다.

 -  public enum JOB_STATE 

  > NONE : 초기화 용

  > JOB_EMPTY : Job이 없음

  > JOB_STANDBY : Job이 수행 대기중

  > JOB_WORKING : Job이 Todo를 수행중

  > JOB_WAITING : Job이 TodoCondition 으로 인해 대기중

  > JOB_DROP : Job이 Drop되어질 예정


 public IEnumerator worker


 -  worker는 실제 Job으로 등록된 일을 수행하는 Corotuine 개체 입니다.

 - 자동으로 JobRepeatManager를 통해 관리되어 지므로 건들지 않는게 좋습니다.

 public object[] parameter


 - Todo, EndAction, TodoCondition, AutoDropCondition Delegate의 param에 전달되어지는 Parameter 입니다.



위와 같이 조금 많은 멤버변수들과 Delegate들이 있는데 부담갖지마시고 사용 방법은 간단합니다~

JobRepeatBase가 어떻게 이용되어 지는지는 03번 글에서 이어서 적도록 하겠습니다.


'Unity Engine > Unity3D Engine' 카테고리의 다른 글

#04.C# Job System_01  (0) 2018.12.22
#03.JobSequenceManager  (0) 2018.12.21
#02.JobRepeatManager - 03  (0) 2018.12.20
#02.JobRepeatManager - 01  (0) 2018.12.19
#01.A에서 B로 일정 시간동안 움직이기  (0) 2018.12.18