static WaitTimeManager() { GameObject go = new GameObject("#WaitTimeManager"); GameObject.DontDestroyOnLoad(go); m_Task = go.AddComponent <TaskBehaviour>(); }
//静态构造函数 static DelayToInvoke() { var gameObject = new GameObject(typeof(DelayToInvoke).FullName, typeof(DelayToInvoke)); Object.DontDestroyOnLoad(gameObject); taskBehaviour = gameObject.AddComponent <TaskBehaviour>(); }
public Task(GameObject owner) { this.owner = owner; aiController = owner.GetComponent <AIController>(); combatStats = owner.GetComponent <CombatStats>(); taskMngr = owner.GetComponent <TaskManager>(); characterAnimator = owner.GetComponent <Animator>(); navAgent = owner.GetComponent <NavMeshAgent>(); taskBehaviour = ExecuteBehaviour; }
// 静态构造函数 static DelayInvoke() { // 创建 GameObject GameObject gameObject = new GameObject("DelayInvoke"); // 场景切换不会销毁该对象 UnityEngine.Object.DontDestroyOnLoad(gameObject); // 给 GameObject 添加 TaskBehaviour 组件,这样非 Mono 类也可以使用 Mono 中的一些方法 TaskBehaviourInstance = gameObject.AddComponent <TaskBehaviour>(); }
private bool MakeRandomMistake(TaskBehaviour handledTask) { var madeMistake = false; if (handledTask.CurrentLane.laneType == TaskboardLaneType.DONE) { var testedRnd = Random.Range(0f, 1f); if (testedRnd < MistakeChance) { handledTask.IsTested = false; madeMistake = true; } var documentedRnd = Random.Range(0f, 1f); if (documentedRnd < MistakeChance) { handledTask.IsDocumented = false; madeMistake = true; } } else if (handledTask.CurrentLane.laneType == TaskboardLaneType.DOING) { var rnd = Random.Range(0f, 1f); if (rnd < MistakeChance) { handledTask.StartTime = ""; handledTask.IsStarted = false; madeMistake = true; } rnd = Random.Range(0f, 1f); if (rnd < MistakeChance) { handledTask.Owner = null; handledTask.IsStarted = false; madeMistake = true; } } if (madeMistake) { GameManager.Instance .NotificationController .DisplayNotification( "Auf dem Taskboard ist etwas nicht richtig eingeordnet.", NotificationType.Warning); } return(madeMistake); }
// Update is called once per frame void Update() { if (concorrentTask != null && !concorrentTask.IsFinished()) { taskDescription = tempTaskDescription + " ou " + concorrentTask.taskDescription; } else { taskDescription = tempTaskDescription; } if (concorrentTask != null && concorrentTask.IsFinished() && concorrentTask.concorrentTask != null && !concorrentTask.concorrentTask.IsFinished()) { concorrentTask = concorrentTask.concorrentTask; } }
// Update is called once per frame void Update() { if (tasks[tasks.Count - 1].IsFinished() && !completed) { CompleteEvent(); } bool findCurrentTask = false; foreach (TaskBehaviour t in tasks) { if (!findCurrentTask) { if (!t.IsFinished()) { currentTask = t; findCurrentTask = true; } } } }
protected override void OnReset() { concorrentTask = startConcorrentTask; }
// Use this for initialization void Start() { tempTaskDescription = taskDescription; startConcorrentTask = concorrentTask; }
public static void AddToPool(TaskBehaviour abandonedTask) { Debug.Log("Adding task to pool"); AbandonedTasks.Enqueue(abandonedTask); }
// Maybe there's no need for this? public void RemoveBehaviour(TaskBehaviour behaviour) { taskBehaviour -= behaviour; }
// Maybe there's no need for this? public void AddBehaviour(TaskBehaviour behaviour) { taskBehaviour += behaviour; }
//public void Kill() //{ // StopAllCoroutines(); //} public void ChangeBehaviour(TaskBehaviour newBehaviour) { taskBehaviour = newBehaviour; }