關於Unity 中對UGUI製作任務系統的程式設計

2022-07-09 13:57:15 字數 1502 閱讀 9094

這個taskmgr指令碼是定義了任務的最基本的兩個屬性,然後將任務做成乙個列表,然後再往這個列表裡新增資料(也就是任務的型別typeid),但是他只有任務的型別,沒有具體的任務資訊,具體的任務資訊寫在另乙個資料指令碼裡邊,然後這個指令碼另乙個作用就是載入預製體,設定他的位置,他是第幾個任務以及什麼型別,還有一句話沒有截到,這句話的作用就是從列表裡邊把任務拿出來,通過索引的方式

這個mytaskinfo資料指令碼就是定義了不同任務的具體資訊,先定義乙個父類的任務,然後子類繼承改寫虛函式方法,然後這個人物的具體資訊是存在字典裡邊,可以通過id來找到他其它的資訊(字典的儲存方式是存的鍵值對)

這是繼承父類的乙個子類

(1)任務列表,這個按鈕在按下的時候(onclick())會呼叫任務列表介面上掛的指令碼

本來可以設定onclick時的gameobject的setactive,結果一開始還不是很熟悉,就用了**來實現,通過乙個bool變數控制開關,不過後來改了一下,發現setactive不是很靈敏有時候會點不出來。

(2)接受按鈕 這個按鈕是經過了兩次判斷的,第一次是判斷你是不是已完成,如果是已完成,那這個按鈕就會將這個任務的資訊從已接任務轉移到已完成任務(改變他的父節點),然後再將這個按鈕設定成不能再點選;如果不是已完成(接受),那就往我的任務揹包裡邊新增任務資訊,此時在進行第二次判斷,如果任務的等級大於你自身的等級,那麼任務就接受不了,會在任務揹包裡顯示接受不了任務,接受按鈕也不會改變,如果自己的等級等於或者大於任務的等級,那麼任務就是可以接受的,在自己的任務揹包裡會顯示任務的具體內容,然後接受按鈕也會變成已領取

(3)刪除按鈕 這個就比較簡單,直接刪除掉這個gameobject(接受,刪除這兩個按鈕都是通過onclick來實現掛在預製體生成的任務上面的,所以刪除的時候直接刪掉這個gameobject就可以了)

(4)我的任務 這個按鈕功能的實現和任務列表的實現是一樣的

(5)已接任務和以完成任務我是設定的toggle進行切換

(6)提公升一級 這個實現的指令碼呢是掛在lvl這個text上的,就是將等級加一然後存下來(用於和人物等級進行比較)然後顯示到螢幕上

關於Unity中UGUI做選單欄彈出

這裡我用的的英文位移用了 translate和vector3.lerp 使用滑鼠位置的判斷結合選單欄的位置狀態來進行開關控制 這裡面有乙個坑就是錨點座標,ui介面顯示的都是錨點座標,跟ui的世界座標和當地座標沒有半毛錢的關係 開始的時候我糾結到座標位移問題上了 其實這裡用動畫的話還是比較方便的,但是...

Unity中UGUI指令碼新增Button按鈕事件

在場景中新增ugui的button按鈕 然後在在指令碼中寫新增的事件 宣告ui using unityengine.ui 宣告場景的跳轉 using unityengine.scenemanagement 戰士模型 弓箭手模型 gameobject m warrior,m archer 戰士按鈕 弓...

Unity筆記 UGUI中Canvas螢幕適配

1 通過recttransform中的anchors和pivot來進行控制項和窗體的布局適配。anchors控制當前panel相對于父窗體的布局位置,可以設定為居中或者左上角,當父窗體拉伸的時候當前panel可以自動布局到正確位置。同時這裡可以設定拉伸,比如主介面一般是全屏拉伸的,這種情況可以在這裡...