#02.JobRepeatManager - 01
#02.JobRepeatManager - 02
이번 글은 마지막으로 JobRepeatManager 에 대한 간단한 구조 설명과
사용 예제로 마무리 하겠습니다.
다소 글이 길어질 수 있습니다. 만약 액기스만 뽑아먹을래! 하는 분은 샘플예제만 보셔도 됩니다.
해서...샘플 예제를 먼저 적어두겠습니다.
----------------------------------------
2. JobRepeatManager
JobRepeatManager 는 Singleton Pattern으로 인스턴스가 생성 됩니다.
싱글톤 패턴으로 생성 되어있는 인스턴스 이므로 만약 JobRepeatManager를 사용하실 분들은 간단히 static으로 인스턴스를 넣어주세요.
JobRepeatManager에는 다음과 같은 Public 함수와 멤버변수가 있습니다.
멤버변수 및 애트리뷰트 |
설명 |
public List<JobRepeatBase> JobList |
get; _jobList |
public float MinDelayTime |
get;set; => m_MinDelayTime |
메소드 이름 |
설명 |
public bool AddDelegateJob(string key, JobTodo toDo, float delay = 1.0f, int repeatCount = 0, object[] parameter = null, JobEndAction endActionWhenDrop = null, JobToDoCondition toDoCondition = null, JobAutoDropCondition autoDropCondition = null, bool isImmediately = true) |
- JobRepeatBase를 생성 및 등록하는 함수 - 일반적인 Delegate 형태의 Job을 등록할 수 있습니다. |
public AddCoroutineJob (string key, IEnumerator coroutineJobTodo, float delay = 1.0f, int repeatCount = 0, object[] param = null, JobToDoCondition toDoCondition = null, JobAutoDropCondition autoDropCondition = null, bool isImmediately = true) |
- JobRepeatBase를 생성 및 등록하는 함수 - Coroutine 형태의 Job을 생성합니다. - Todo를 추가로 Job에 등록하고 싶으실 땐 AddFunctionChain을 호출하여 사용합니다. |
public bool JobStart (string key) |
- 특정 등록되어진 Job을 key 값으로 찾아서 Job을 Execute 시킵니다. - 정상적인 실행이 성공되면 true를 리턴합니다. 실패 시 return false |
public bool RemoveJob(string key) |
- 특정 등록되어진 Job을 Key 값으로 찾아서 드랍(Drop)시킵니다. 정상적으로 드랍에 성공할 시 true를 리턴합니다. |
public int JobDropAll ( ) | - 등록되어진 모든 Job을 Drop 시킵니다. - 드랍시킨 Job 갯수를 리턴합니다. |
public bool ChangeJobDelay (string key, float newDelay) | - 특정 등록되어진 Job을 Key 값으로 찾은 뒤 해당 Job의 DelayTime을 변경합니다. - 만약 수행중(Job Started)인 Job 이었다면 다음 수행부터 Delay가 변경됩니다. - 변경에 선공하면 true 를 리턴합니다. |
public bool ChangeJobRepeatCount (string key, int repeatCount) | - 특정 등록되어진 Job을 Key 값으로 찾은 뒤 해당 Job의 RepeatCount를 변경합니다. - 만약 수행중(Job Started)인 Job 이었다면 다음 수행부터 RepeatCount가 변경됩니다. - 변경에 성공하면 true를 리턴합니다. |
public bool AddFunctionChain(string key, JobTodo todo = null, JobTodoCondition TodoCheck = null, JobAutoDropCondition autodropCondition = null, bool isExecuteImmediately = true) | - key값으로 찾은 Job에 등록되어진 Delegate를 추가로 등록하는 함수입니다. |
public bool RemoveFunctionChain(string key, JobTodo todo = null, JobTodoCondition todoCheck = null, JobAutoDropCondition autodropCondition = null, bool isExecuteImmediately = true) | -Key 값으로 찾은 Job에 등록되어진 Delegate를 삭제하는 함수입니다. |
public JobRepeatBase GetJobBase(string key) | - Key 값으로 JobRepeatBase 정보를 찾는 함수입니다. |
private IEnumerator CoAutoDropWorkers() | - Drop 상태가 된 Job을 삭제시키는 Coroutine 입니다. - JobRepeatManager 의 instance가 Start 될 때 실행 됩니다. - Drop 상태 체크는 private WaitForSeconds dropManagingDelay 마다 수행됩니다.
|
private IEnumerator CoJobHandle(string key) | - JobRepeatManager에 등록되어진 Job들을 동작시키는 Corotuine 입니다. - JobRepeatBase에 담겨져있는 Job.state 값에 따라 Job을 동작시킵니다. |
-------------------------------
'Unity Engine > Unity3D Engine' 카테고리의 다른 글
#04.C# Job System_01 (0) | 2018.12.22 |
---|---|
#03.JobSequenceManager (0) | 2018.12.21 |
#02.JobRepeatManager - 02 (0) | 2018.12.20 |
#02.JobRepeatManager - 01 (0) | 2018.12.19 |
#01.A에서 B로 일정 시간동안 움직이기 (0) | 2018.12.18 |