using Unity.FPS.Game;using UnityEngine;namespace Unity.FPS.Gameplay
{
publicclassObjectiveKillEnemies:Objective{
protectedoverridevoidStart(){
base.Start();//Objective.cs
EventManager.AddListener<EnemyKillEvent>(OnEnemyKilled);// set a title and description specific for this type of objective, if it hasn't oneif(string.IsNullOrEmpty(Title))
Title ="Eliminate "+" the"+" enemy";}voidOnDestroy(){
EventManager.RemoveListener<EnemyKillEvent>(OnEnemyKilled);}}}
2.2 Title的产生:
利用Objective.cs来存储函数,不挂载。
利用using Unity.FPS.Game来使用。
代码:
using System;using UnityEngine;namespace Unity.FPS.Game
{
publicabstractclassObjective:MonoBehaviour{
[Tooltip("Name of the objective that will be shown on screen")]publicstring Title;[Tooltip("Delay before the objective becomes visible")]publicfloat DelayVisible;publicbool IsCompleted {
get;privateset;}publicboolIsBlocking()=>!(IsCompleted);publicstaticevent Action<Objective> OnObjectiveCreated;publicstaticevent Action<Objective> OnObjectiveCompleted;protectedvirtualvoidStart(){
OnObjectiveCreated?.Invoke(this);DisplayMessageEvent displayMessage = Events.DisplayMessageEvent;//Event.cs里定义的
displayMessage.Message = Title;
displayMessage.DelayBeforeDisplay =0.0f;
EventManager.Broadcast(displayMessage);}/* public void CompleteObjective(string descriptionText, string counterText, string notificationText)
{
IsCompleted = true;//可能要用于结束消息提示。 单独挑出来
ObjectiveUpdateEvent evt = Events.ObjectiveUpdateEvent;
evt.Objective = this;
evt.NotificationText = notificationText;
evt.IsComplete = IsCompleted;
EventManager.Broadcast(evt);
OnObjectiveCompleted?.Invoke(this);
}*///任务完成时,借鉴使用 }}