標籤: 任務系統
2015-05-16 12:10
1914人閱讀收藏
舉報
unity實戰(16)
1.任務管理類與任務類是一對一的關係,而任務管理類與其他類是一對多的關係。對於一對多,比較容易想到的就是觀察者模式了。在觀察者模式中,是觀察者決定要監視的東西,而不是事件的發生者決定誰觀察它。
2.對於任務類/任務條件類/任務獎勵類來說,有邏輯意義上的,也有介面意義上的,因此要分開處理。
這裡給出主要的邏輯**:
[csharp]view plain
copy
using
system.collections;
using
system.collections.generic;
using
system.xml.linq;
using
system;
public
class
task
foreach
(var s
inc)
} //判斷條件是否滿足
public
void
check(taskeventargs e)
} for(
inti = 0; i
} taskitem.finish(true
);
e.taskid = taskid;
taskmanager.instance.finishtask(e);
} //獲取獎勵
public
void
reward()
//取消任務
public
void
cancel()
}
[csharp]view plain
copy
using
unityengine;
using
system.collections;
using
system.collections.generic;
using
system.xml.linq;
using
system;
public
class
taskmanager : monosingletion
public
void
gettask(
string
taskid)
} public
void
checktask(system.object sender, taskeventargs e)
} public
void
finishtask(taskeventargs e)
public
void
getreward(taskeventargs e)
} dictionary.remove(e.taskid);
} public
void
canceltask(taskeventargs e)
}
}
思路(這裡以怪物被消滅後為例):
1.怪物消滅後,傳送資訊到訊息中心,訊息中心再將訊息分發給監聽它的東西,例如得分增加,經驗上公升等等,其中包括傳送給我們的taskmanager(如果沒有訊息中心,那麼如果想增加乙個觀察者觀察怪物消滅的資訊,就要改動怪物的**,相反,如果使用訊息中心,那麼只需要在新增的觀察者中註冊事件就可以了)
2.taskmanager將資訊傳遞到正在執行的任務task,task根據條件判斷是否完成任務,如果完成了,則通知taskmanager(兩者是一對一的關係)
3.taskmanager將任務完成的訊息分發出去
測試:1.對於收集物品的任務,當收集完成後,再丟棄部分物品。結果:任務不顯示完成,領取不了獎勵
2.多個任務同時進行。結果:可以領取完成了任務的獎勵
3.接受任務後再開啟任務面板。結果:顯示正常
4.任務中存在相同條件的。結果:正常
不足:1.對於收集物品的任務,沒有對物品起始數量進行初始化
2..等等
總結:這裡可以看到事件委託的強大了吧!
這是unitypackage:
ps:匯入unity後會發現報錯,這時只需新增乙個monosingletion類即可:
頂
搭建乙個簡單的後台管理系統(一)
1.建立乙個資料夾myadmin 2.進入該資料夾的操作命令 3.依次輸入下列命令 vue init 初始化專案 npm install 安裝npm 模組 的依賴 cd myadmin 進入專案目錄 npm run serve 執行專案 繼續在上面命令行內輸入 這裡是完整安裝 npm i eleme...
給系統乙個」幻影「
當前,網路安全角勢嚴峻,網路安全事件時有發生,從年初的gmail 雅虎和hotmail 2.7億賬號遭洩露到myspace出現史上最大規模資料洩露,再到令國人憤慨的準大學生徐玉玉遭電信詐騙後死亡,5.26侵犯公民個人資訊案,這些令人震驚的安全事件表明資料正成為網路攻擊者攻擊的首要目標。然而,很多企業...
開發乙個作業系統(一)
筆者今年大三,來自沙坡村男子技術學院,在10月初開始打算自己製作乙個作業系統,最開始理由很簡單,自己想做乙個能夠運用最高效的 實現軟硬體的結合的programmer,再加之後來班主任評獎學金時候,覺得acm校賽的一等獎能比自己辛苦5個月參加的iot比賽的國獎更加有力,於是也更加堅定了製作屬於自己os...