創作內容

5 GP

【Unity x C# 學習筆記】用Interface改良以前的畫面物件選取工具

作者:趴趴鼠Loading│2021-01-26 22:02:18│贊助:10│人氣:146
先上半成品demo
說明:
紅色的是怪物,玩家是比較大顆的綠色球球,可以召喚小綠球(近戰)、藍球(遠程),召喚需要扣HP,召喚物死掉後變食物(灰色大便條),吃掉可以回血。(怪物會去可以吃)

地板上的紫線別管它,懶得弄QQ

腳本:連結

程式構想等等介紹,先看看新舊差別:

舊的是限定某個類別可以選取

現在改成特定interface

滑鼠單擊選取看不太出差別,但畫面框選就差滿多的。
舊的:

新的:
程式碼變長主要是專案需求,多了些變化,但主要概念還是164~170行


以下簡單介紹程式構想:
因滑鼠操作有分 左鍵(選取友方)、右鍵(選取攻擊目標),因此可被左鍵選取的Selectable為真、可被右鍵選取的Targetable為真。兩者不衝突。







最近接觸interface的心得是:
同目標的工作,但做法都不同 => 用介面 (interface)
作法大同小異,唯參數要調整 => 用類別 (class)

還有感謝大佬說的 (回顧留言區):
介面是將處理所需的資料與處理做法分離,讓處理泛型腳本的類別或某個功能的Manager可以專心在整體的邏輯。


這裡負責管理這些介面的Manager是"ScreenObjPicker"類別。
一開始先產生自己的instance。



HashSet 結構《HashSet<T>類別提供高效能設定作業。 集合是不包含重複專案,且其元素沒有特定順序的集合。》(微軟文件), 跟List的差別可以參考看看這篇

這裡27、28行的Hashset變數用來管理場上繼承該介面的物件,物件生成時註冊進來,這樣就不用每次選取時都抓一次。

Unit類別為例:

在檢視器長這樣

第43-58行指定Manager的HashSet,別的腳本若需要存取該資料,則可透過介面的Container或TargetableList變數去存取,而不是直接指定Manager的資料,這樣以後改了個Manager或換其他資料來源,只要改介面的變數即可。

有趣的是,若兩個介面的變數名稱相同,則實作時只需寫一個就好。



其他都是些基本滑鼠操作,加了些event讓其他腳本接收訊息這樣。

畫出框與範圍選取:

157行被註解掉是因為執行foreach時修改到陣列長度會造成"Collection was modified; enumeration operation may not execute" error,所以158行後面加個ToList()會複製一個集合。




雜談:
我討厭這個專案= = 害我壓力山大,逃避了一大堆時間,有點不太想做,但又怕損老師面子。

需求只說有主角A(玩家)、主角B(電腦),他們在小房間裡面追逐打架,想自己加什麼都行,就是盡量不要增加美術工作量,然後先試試看LOL的操作方式。 聽美術說專業的建模要花1、2月做一隻角色,不過都要走卡通風了,只能抱著半信半疑的態度。

這玩法怎麼想都覺得好玩不起來,也許是我還沒想到有什麼變化? 覺得還是第一個版本比較好玩。請問各位有什麼想法?

  但說到底因為個人情緒影響到程式品質感覺很慚愧...... (後面能動就好沒甚麼想管了= =)

引用網址:https://home.gamer.com.tw/TrackBack.php?sn=5053721
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:Unity|C#|介面|腳本

留言共 3 篇留言

悠閒紅茶(冷卻中)
看到程式碼先舉白旗QwQ

01-26 22:46

趴趴鼠Loading
你可以的wwww01-29 09:21
I2OI3
回合制有沒有戲

01-27 02:40

趴趴鼠Loading
回合制進攻嗎? 感覺不錯耶01-29 09:18
IQ-黃泉歸鸚鵡
感覺有點像即時戰略,光看現在的成品可能可以做成什麼外星生物互相爭取生存的東西

01-27 16:02

趴趴鼠Loading
感謝建議[e16]
美術提供的地圖不會太大,不知道適不適合01-29 09:21
我要留言提醒:您尚未登入,請先登入再留言

5喜歡★news2000tw 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:【紓壓繪 四格】壞壞組長... 後一篇:【紓壓繪】 這支ㄌㄌ的胸...

追蹤私訊切換新版閱覽

作品資料夾

yorkyoung各位巴友們
歡迎來我的小屋參觀~也歡迎追蹤我的IG喔!看更多我要大聲說昨天11:02


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】