Unity C# | Interface & Damage System (easy)

更新於 2023/04/17閱讀時間約 5 分鐘

一、前言

  這篇文章將會講述 Unity C# 中關於 Interface (介面/接口)的基本介紹以及原理說明,最後提供完整的使用流程。

二、介面 | Interface

  我在撰寫程式的這段時間中,其實我都沒有使用介面,但依然認為這是必須要學習的知識,因為實在有太多地方講述介面的用處了,正式學習後,我更加堅定這股想法了。

a. 簡介

  定義一個規範,讓之後的程式腳本在實作時遵守結構,並且實作出各自不同的細節,其他程式也能通過抓取介面,來取得定義好的屬性與函式。

b. 抽象

  這是我接觸的第一個抽象資料型態,我發現抽象能處理的事情會比實作還要多不少,不過在前期的規劃與流程中,會複雜很多並且難以理解。
  抽象的資料型態,除了 Interface 以外,還有 Abstract 、 Virtual 這兩個資料型態有印象可以學習,搜尋資料後,還有 Generic 、Delegate 可以學習,期中委派已經有了解部分了。

c. 用途

  在遊戲設計中,我自己判斷介面的用途偏向於抓取,不過相較於普通的抓取物件來說,介面的便利性與效能都更加優秀,唯一的問題可能是需要規劃,這容易造成後期不好維護。

三、原理說明

  接下來會從名稱與特色說明 Interface 的運作原理。

a. 介面與接口

  這是我繪製的示意圖,可以簡單理解介面的原理:第一點,只要實作同一個介面的程式腳本,裡面一定會出現相同的資料結構;第二點,其他程式腳本能以此介面名稱為接口,不需要抓取整個物件,也不需要知道其他程式內容。

b. 抽象與實作

  這兩個概念最大的差異,就是能不能直接指定到一個明確的物件,以介面這個資料型態來解釋,就是它沒有明確的某一個功能,因此能套用到多個物件的程式腳本中。
  在程式設計中,會明確到哪一個變數會有哪些變量,因此實作是非常詳細的一種資料結構,也就不容易套用到各種情況了,不過實作因為明確清晰,在程式設計的過程中也相對直觀。

c. 不問其身分

  介面的特色,就是「不問身份,只問簽章」的概念,簽章的概念可以在微軟官方的一篇文章找到,簡單來說,簽章是一種規範,只要符合規範的對象就會娶得簽章。
  換句話說,只要符合座號(屬性)與學生(函式)的對象,在判斷是不是叫做台灣大學的介面時偷會通過,不需要每一所大學都指定一次,也不需要過問每個大學其他的功能。

四、介面的使用流程

  接下來會講述如何使用 Interface 這個資料結構。

a. 創建 Interface 資料結構

  首先,創建一個 Interface,因為跟類別(Class)的結構相同,所以只需要公有或私有以及資料結構,再搭配一個程式碼區塊就可以了。

b. 定義屬性

  接下來,定義一個擁有讀寫設定的屬性(property),關於讀跟寫的介紹,在之前的一篇文章我有介紹,如果了解屬性的概念,直接撰寫自己需要的屬性有哪些即可。

c. 定義函式

  在這裡定義函示名稱即可,一樣依照需求安排數量。

d. 實作介面

  接下來,打開想要實作介面的類別,並且在 Unity 內建的實作類別 Monobehaviour 後面,打上一個「,」後添加自己撰寫的介面名稱。

e. 履行簽章

  隨後,在這個程式腳本中開始履行簽章,把前面定義好的屬性以及函式一一撰寫出來,屬性就要用讀跟寫與自己私有變數的關係,這些變數通常會在前面添加「_(底線)」用於表達這是用於介面的變數,函式的話,只要名稱正確,其他就跟宣告其他函式相同。

f. 完成

  這樣就完成介面的創建與實作了,在其他腳本就可以像是呼叫某個物件一樣來呼叫介面,並且可以抓取實作後介面的屬性與函式,進行兩個資訊的交換,不用一一指定。

五、後記

  這篇文章對我來說,是一個跨階段的成長,因為我更了解怎麼介紹一個新的概念,並且能寫出完整的製作流程,學習到了一些新的名詞以後,未來我也可以藉由這篇文章來複習,對於其他新手程式設計師,也有足夠的用處。

a. ChatGPT 與 Google 兩種蒐尋軟體的結合

  在撰寫這篇文章的時候,我的資料參考除了微軟的官方,我還有去詢問GPT我應該要怎麼撰寫,我聽到介面是實作而不是繼承的時候,我以為人工智慧終於出錯了,直到我找到官方文件,也是叫他實作,或許這種也稱為繼承?

b. 保持質疑的態度

  學習知識的過程,最重要的是保持質疑的態度,先不說會不會讓你找到正確答案,但在這個過程中絕對可以接觸更多的相關知識,也能理解更多彼此相互印證的資訊。

c. 重新開始經營 Youtube 了

  感謝你看完這篇文章,不知道它對你的幫助有多少呢?這是我在學習介面時撰寫的程式碼與測試內容,如果想了解更具體的介面測試影片,可以參考下面這部影片。
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
avatar-img
105會員
247內容數
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
瓶裝雪的沙龍 的其他內容
這篇文章將會講述 Unity 中協程(Coroutine)的基本介紹,分享一些關於協程的應用方向,最後並總結簡單撰寫協程的步驟。
這篇文章將會講述 Blockout 的介紹和適合的材質。
這篇文章將會講解 Git 專案上傳 GitHub 的流程。
這篇文章將會講述 Animator 中 Play 和 Transition 的差異和特色。
這篇文章將會講述關於相機的核心和常用知識。
這篇文章將會介紹 Unity 相機的不同空間座標。
這篇文章將會講述 Unity 中協程(Coroutine)的基本介紹,分享一些關於協程的應用方向,最後並總結簡單撰寫協程的步驟。
這篇文章將會講述 Blockout 的介紹和適合的材質。
這篇文章將會講解 Git 專案上傳 GitHub 的流程。
這篇文章將會講述 Animator 中 Play 和 Transition 的差異和特色。
這篇文章將會講述關於相機的核心和常用知識。
這篇文章將會介紹 Unity 相機的不同空間座標。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
最近ChatGPT-4o的發布引起了我的注意,又在Youtube看上見有人教學如何用ChatGPT設計屬於自己的家教,被他的能力震撼到的我一頭熱就訂閱了plus版然後馬上設計了一個自己的家教。最一開始的時候我只有把它用來學習語言的輔助,但用著用著忽然想到:「如果我把它用來引導我學習我沒有學過的領域呢
Thumbnail
遊戲引擎開發商 Unity 一直是我感覺很有發展潛力的企業,《原神》、《王者榮耀》等明星遊戲都是透過其引擎所建構,在手遊開發領域,擁有絕對統治力。然而,營運實績與線圖走勢卻不是如此,近 8 季毛利成長率有 4 季為負,1Q24 營運收入是近 8 季來最低值,-$375M…
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 類別Class 創造類別之後就可以持續使用創建的類別來創建物件,以武器為例,在遊戲裡有不同的武器,但是他們的屬性是一樣的,我們就可以在一個類別裡面設定不同
Thumbnail
開啟Xampp伺服器,並啟動 apache & mysql mysql建立 開啟Unity 建立 Script toPhp.cs Unity物件 toWeb物件設定 此處需特別留意設定 UItext & MYtext ,否則會出現物件未設定的Null錯誤 Button 設定 test.php con
  透過Unity平台開發出來的遊戲,比較廣為人知,例如憤怒鳥和寶可夢。Unity 的遊戲開發技術,可以刺激遊戲產業,更朝氣蓬勃有效率地開發新遊戲用戶透過遊戲平台,就可以進入元宇宙的世界!
Thumbnail
Unity在這週公布了2022年Q1的財報,財報發布後股價下挫30%,下跌至30美元,已經遠遠跌破兩年前的上市價。Unity雪崩式的下跌是因為Q1的營運不理想、未來的營運預期不理想、還是單純是隨著近期成長股估值修正而下跌呢?這篇文會分析Unity 2022Q1財報及預測Unity未來的營運狀況。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
最近ChatGPT-4o的發布引起了我的注意,又在Youtube看上見有人教學如何用ChatGPT設計屬於自己的家教,被他的能力震撼到的我一頭熱就訂閱了plus版然後馬上設計了一個自己的家教。最一開始的時候我只有把它用來學習語言的輔助,但用著用著忽然想到:「如果我把它用來引導我學習我沒有學過的領域呢
Thumbnail
遊戲引擎開發商 Unity 一直是我感覺很有發展潛力的企業,《原神》、《王者榮耀》等明星遊戲都是透過其引擎所建構,在手遊開發領域,擁有絕對統治力。然而,營運實績與線圖走勢卻不是如此,近 8 季毛利成長率有 4 季為負,1Q24 營運收入是近 8 季來最低值,-$375M…
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 類別Class 創造類別之後就可以持續使用創建的類別來創建物件,以武器為例,在遊戲裡有不同的武器,但是他們的屬性是一樣的,我們就可以在一個類別裡面設定不同
Thumbnail
開啟Xampp伺服器,並啟動 apache & mysql mysql建立 開啟Unity 建立 Script toPhp.cs Unity物件 toWeb物件設定 此處需特別留意設定 UItext & MYtext ,否則會出現物件未設定的Null錯誤 Button 設定 test.php con
  透過Unity平台開發出來的遊戲,比較廣為人知,例如憤怒鳥和寶可夢。Unity 的遊戲開發技術,可以刺激遊戲產業,更朝氣蓬勃有效率地開發新遊戲用戶透過遊戲平台,就可以進入元宇宙的世界!
Thumbnail
Unity在這週公布了2022年Q1的財報,財報發布後股價下挫30%,下跌至30美元,已經遠遠跌破兩年前的上市價。Unity雪崩式的下跌是因為Q1的營運不理想、未來的營運預期不理想、還是單純是隨著近期成長股估值修正而下跌呢?這篇文會分析Unity 2022Q1財報及預測Unity未來的營運狀況。