Unity C# | Interface & Damage System (easy)

更新於 發佈於 閱讀時間約 6 分鐘

一、前言

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

二、介面 | Interface

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

a. 簡介

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

b. 抽象

  這是我接觸的第一個抽象資料型態,我發現抽象能處理的事情會比實作還要多不少,不過在前期的規劃與流程中,會複雜很多並且難以理解。

  抽象的資料型態,除了 Interface 以外,還有 Abstract 、 Virtual 這兩個資料型態有印象可以學習,搜尋資料後,還有 Generic 、Delegate 可以學習,期中委派已經有了解部分了。

c. 用途

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

三、原理說明

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

a. 介面與接口

raw-image

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

b. 抽象與實作

  這兩個概念最大的差異,就是能不能直接指定到一個明確的物件,以介面這個資料型態來解釋,就是它沒有明確的某一個功能,因此能套用到多個物件的程式腳本中。

  在程式設計中,會明確到哪一個變數會有哪些變量,因此實作是非常詳細的一種資料結構,也就不容易套用到各種情況了,不過實作因為明確清晰,在程式設計的過程中也相對直觀。

c. 不問其身分

  介面的特色,就是「不問身份,只問簽章」的概念,簽章的概念可以在微軟官方的一篇文章找到,簡單來說,簽章是一種規範,只要符合規範的對象就會娶得簽章。

  換句話說,只要符合座號(屬性)與學生(函式)的對象,在判斷是不是叫做台灣大學的介面時偷會通過,不需要每一所大學都指定一次,也不需要過問每個大學其他的功能。

《Microsoft API | 明確介面實作 (C# 程式設計手冊)》

四、介面的使用流程

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

a. 創建 Interface 資料結構

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

b. 定義屬性

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

《Unity C# | 讀(get)和寫(set)概述 & 基本運用》

c. 定義函式

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

d. 實作介面

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

e. 履行簽章

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

f. 完成

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

五、後記

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

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

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

b. 保持質疑的態度

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

c. 重新開始經營 Youtube 了

  感謝你看完這篇文章,不知道它對你的幫助有多少呢?這是我在學習介面時撰寫的程式碼與測試內容,如果想了解更具體的介面測試影片,可以參考下面這部影片。


《Unity C# | Interface & Damage System (Easy)》

留言
avatar-img
留言分享你的想法!
avatar-img
瓶裝雪的沙龍
111會員
247內容數
你好,我是瓶裝雪!我是一名遊戲設計師!
瓶裝雪的沙龍的其他內容
2024/09/22
魔火術師是第三人稱動作射擊遊戲,屬於專題畢業製作,在畢業組成新的團隊後優化並上架。
Thumbnail
2024/09/22
魔火術師是第三人稱動作射擊遊戲,屬於專題畢業製作,在畢業組成新的團隊後優化並上架。
Thumbnail
2024/01/26
這篇文章將會講述虛擬(virtual)與覆蓋(override)的簡易使用方式。
Thumbnail
2024/01/26
這篇文章將會講述虛擬(virtual)與覆蓋(override)的簡易使用方式。
Thumbnail
2023/12/29
講述遊戲設計從新手到專業的發展方向。
Thumbnail
2023/12/29
講述遊戲設計從新手到專業的發展方向。
Thumbnail
看更多
你可能也想看
Thumbnail
Interface我們就將之想像成是一種標準化的規範,在產品還沒開發出來之前,我們心中想必已經有個藍圖,嗯…,這個功能需要什麼樣的功能,這時候就可以來制定介面,以「設計」為出發點而後再進入「實作」,如此一來我們在設計階段就能發現一些盲點,減少經過實作過程才發現的窘境,節省繁複修改的成本,而且介面定義
Thumbnail
Interface我們就將之想像成是一種標準化的規範,在產品還沒開發出來之前,我們心中想必已經有個藍圖,嗯…,這個功能需要什麼樣的功能,這時候就可以來制定介面,以「設計」為出發點而後再進入「實作」,如此一來我們在設計階段就能發現一些盲點,減少經過實作過程才發現的窘境,節省繁複修改的成本,而且介面定義
Thumbnail
這篇文章將會講述 Unity C# 中關於 Interface (介面/接口)的基本介紹以及原理說明,最後提供完整的使用流程。
Thumbnail
這篇文章將會講述 Unity C# 中關於 Interface (介面/接口)的基本介紹以及原理說明,最後提供完整的使用流程。
Thumbnail
這篇文章將會講述使用 C# 的類( Class ) 來讓欄位模組(module)化。
Thumbnail
這篇文章將會講述使用 C# 的類( Class ) 來讓欄位模組(module)化。
Thumbnail
C# 介面 ( C# Interface ) – (C#教學) – 介面就是類別的接口, 就好像在電插一樣, 不同的電器有同一類與電力的接口. 要編程就像一個布局, 當引用一個class時, 會引用不同的method, property. 如果method的class可以轉換, 就大大簡化了編程.
Thumbnail
C# 介面 ( C# Interface ) – (C#教學) – 介面就是類別的接口, 就好像在電插一樣, 不同的電器有同一類與電力的接口. 要編程就像一個布局, 當引用一個class時, 會引用不同的method, property. 如果method的class可以轉換, 就大大簡化了編程.
Thumbnail
abstract class = 抽象類別 interface = 介面 抽象類別與介面都無法建立物件。 1. 使用abstract關鍵字來建立抽象類別,interface關鍵字建立介面。 interface只能繼承interface,且可以繼承多個:
Thumbnail
abstract class = 抽象類別 interface = 介面 抽象類別與介面都無法建立物件。 1. 使用abstract關鍵字來建立抽象類別,interface關鍵字建立介面。 interface只能繼承interface,且可以繼承多個:
Thumbnail
本篇文章將會介紹C#的基礎構成和字串的使用,若想要更詳細的教學,可以參考前一篇文章,前往Microsoft官方教學學習。
Thumbnail
本篇文章將會介紹C#的基礎構成和字串的使用,若想要更詳細的教學,可以參考前一篇文章,前往Microsoft官方教學學習。
Thumbnail
這篇文章主要介紹存取子讀(get)和寫(set)的概述,並且簡單介紹基本的使用方法以及其他程式呼叫範例。
Thumbnail
這篇文章主要介紹存取子讀(get)和寫(set)的概述,並且簡單介紹基本的使用方法以及其他程式呼叫範例。
Thumbnail
本文以實際的程式碼來說明Value Type和Reference Type的差異,並介紹實用的除錯工具。
Thumbnail
本文以實際的程式碼來說明Value Type和Reference Type的差異,並介紹實用的除錯工具。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News