| | |
| | |
|
| | | public class ConfigInitiator
|
| | | {
|
| | | static int minWorkingTask = 1;
|
| | | static int minWorkingTask = 3;
|
| | | static int maxWorkingTask = 10;
|
| | |
|
| | | static List<ConfigInitTask> priorTasks = new List<ConfigInitTask>();
|
| | |
| | | }
|
| | |
|
| | | var workingTaskLimit = completeCount >= priorTaskCount ? maxWorkingTask : minWorkingTask;
|
| | | while (doingTasks.Count < workingTaskLimit && (priorTasks.Count > 0 || normalTasks.Count > 0))
|
| | | {
|
| | | ConfigInitTask task = null;
|
| | | if (priorTasks.Count > 0)
|
| | | {
|
| | | task = priorTasks[0];
|
| | | priorTasks.RemoveAt(0);
|
| | | }
|
| | | else
|
| | | {
|
| | | task = normalTasks[0];
|
| | | normalTasks.RemoveAt(0);
|
| | | }
|
| | |
|
| | | while (doingTasks.Count < workingTaskLimit && priorTasks.Count > 0)
|
| | | {
|
| | | ConfigInitTask task = priorTasks[0];
|
| | | priorTasks.RemoveAt(0);
|
| | | doingTasks.Add(task);
|
| | | task.Start();
|
| | | }
|
| | |
|
| | | //需要等待优先表完成加载,因为后面的表可能依赖优先表
|
| | | if (completeCount < priorTaskCount)
|
| | | return;
|
| | |
|
| | | while (doingTasks.Count < workingTaskLimit && normalTasks.Count > 0)
|
| | | {
|
| | | ConfigInitTask task = normalTasks[0];
|
| | | normalTasks.RemoveAt(0);
|
| | | doingTasks.Add(task);
|
| | | task.Start();
|
| | | }
|
| | |
| | | public string taskName;
|
| | | Action task;
|
| | | ConfigInitResult result;
|
| | | float startTime;
|
| | |
|
| | | public ConfigInitTask(string taskName, Action task, ConfigInitResult result)
|
| | | {
|
| | |
| | | public void Start()
|
| | | {
|
| | | task();
|
| | | #if UNITY_EDITOR
|
| | | startTime = Time.realtimeSinceStartup;
|
| | | #endif
|
| | | }
|
| | |
|
| | | public bool Completed()
|
| | | {
|
| | | #if UNITY_EDITOR
|
| | | bool ret = result();
|
| | | if (ret)
|
| | | { |
| | | float costTime = Time.realtimeSinceStartup - startTime;
|
| | | if (costTime > 0.1f)
|
| | | {
|
| | | Debug.Log("ConfigInitTask " + taskName + " cost too much time:" + costTime);
|
| | | }
|
| | | }
|
| | | return ret;
|
| | | #else
|
| | |
|
| | | return result();
|
| | | #endif
|
| | | }
|
| | |
|
| | | }
|