版權聲明:
- 本文原創發布於博客園"優夢創客"的博客空間(網址:
http://www.cnblogs.com/raymondking123/
)以及微信公眾號"優夢創客" - 您可以自由轉載,但必須加入完整的版權聲明!
效果展示:
基本的界面
1:先看一下兩個用來管理數據的腳本
這個TaskMgr腳本是定義了任務的最基本的兩個屬性,然后將任務做成一個列表,然后再往這個列表里添加數據(也就是任務的類型typeid),但是他只有任務的類型,沒有具體的任務信息,具體的任務信息寫在另一個數據腳本里邊,然后這個腳本另一個作用就是加載預制體,設置他的位置,他是第幾個任務以及什么類型,還有一句話沒有截到,這句話的作用就是從列表里邊把任務拿出來,通過索引的方式
這個MyTaskInfo數據腳本就是定義了不同任務的具體信息,先定義一個父類的任務,然后子類繼承改寫虛函數方法,然后這個人物的具體信息是存在字典里邊,可以通過id來找到他其它的信息(字典的存儲方式是存的鍵值對)
這是繼承父類的一個子類
2:然后說一下界面上每個按鈕的功能是怎么實現的
(1)任務列表,這個按鈕在按下的時候(onclick())會調用任務列表界面上掛的腳本
本來可以設置onclick時的gameobject的setactive,結果一開始還不是很熟悉,就用了代碼來實現,通過一個bool變量控制開關,不過后來改了一下,發現setactive不是很靈敏有時候會點不出來。
(2)接受按鈕 這個按鈕是經過了兩次判斷的,第一次是判斷你是不是已完成,如果是已完成,那這個按鈕就會將這個任務的信息從已接任務轉移到已完成任務(改變他的父節點),然后再將這個按鈕設置成不能再點擊;如果不是已完成(接受),那就往我的任務背包里邊添加任務信息,此時在進行第二次判斷,如果任務的等級大於你自身的等級,那么任務就接受不了,會在任務背包里顯示接受不了任務,接受按鈕也不會改變,如果自己的等級等於或者大於任務的等級,那么任務就是可以接受的,在自己的任務背包里會顯示任務的具體內容,然后接受按鈕也會變成已領取
(3)刪除按鈕 這個就比較簡單,直接刪除掉這個gameobject(接受,刪除這兩個按鈕都是通過onclick來實現掛在預制體生成的任務上面的,所以刪除的時候直接刪掉這個gameobject就可以了)
(4)我的任務 這個按鈕功能的實現和任務列表的實現是一樣的
(5)已接任務和以完成任務我是設置的toggle進行切換
(6)提升一級 這個實現的腳本呢是掛在LVL這個text上的,就是將等級加一然后存下來(用於和人物等級進行比較)然后顯示到屏幕上
3:最后說一下這個tasktip 這個我是在任務預制體上的那個腳本里用的兩個接口 IPointerEnterHandler ,IPointerExitHandler當鼠標放到這個任務上的時候就會調用掛在tasktip上的show函數(把tasktip上的腳本寫成了單例),這個show函數的作用第一個是將setactive設置為true;第二個是通過傳進來的id找到這個任務的類型以及其他的基本信息,然后再將這個任務的具體信息寫到tasktip上