Unity C# | Interface & Damage System (easy)

更新於 發佈於 閱讀時間約 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
106會員
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
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
這個章節主要介紹了Swift程式語言中物件導向程式設計的基本概念,包括類別、建構子、公開、私有、受保護等等的概念。同時,也介紹了繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型和反射等進階特性。
Thumbnail
這篇文章介紹了面試時以及開始工作後可能會遇到的問題,包括物件導向OOP、SOLID 設計原則、測試方式,以及 Cookie、Session 與 Cache 的相似處與不同處。提供了豐富的相關資訊。
Thumbnail
本章節是一個初級的 TypeScript 教學,主要介紹了 TypeScript 中物件導向程式設計的各種核心概念,包括類別、建構子、存取修飾子、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等。每個概念都通過詳細的解釋和實例代碼來進行深入的介紹。
Thumbnail
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
Thumbnail
本章節旨在介紹 C# 中函數的基本結構,包括訪問修飾符、返回類型、方法名稱、參數列表和方法體。同時,也介紹了函數的各種呼叫方式、參數傳遞方式和返回值類型。讀者可以通過本章節,深入理解 C# 中函數的使用和應用。
Thumbnail
C#程式由一或多個檔案組成,包含命名空間、類別、結構、介面、列舉和委派等型別。Main方法是C#應用程式的進入點。在C#中,註解用於在程式碼中添加說明,有單行和多行兩種類型。變數的定義需要指定變數的類型和名稱,可以一次為多個變數賦值。
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
物件導向設計的一個重點就是封裝,這有很多層面上的意義,但基本上就是控制物件的成員變數和方法的存取權。物件導向的封裝還跟繼承機制有關,這使得有一些時候我們逼不得已必須把函式定義在類別上,這種做法使得物件的功能變得難以拆解。封裝應該是模組的職責,並不需要再給物件相同的能力。 一般的模組系統就是把相
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
這個章節主要介紹了Swift程式語言中物件導向程式設計的基本概念,包括類別、建構子、公開、私有、受保護等等的概念。同時,也介紹了繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型和反射等進階特性。
Thumbnail
這篇文章介紹了面試時以及開始工作後可能會遇到的問題,包括物件導向OOP、SOLID 設計原則、測試方式,以及 Cookie、Session 與 Cache 的相似處與不同處。提供了豐富的相關資訊。
Thumbnail
本章節是一個初級的 TypeScript 教學,主要介紹了 TypeScript 中物件導向程式設計的各種核心概念,包括類別、建構子、存取修飾子、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等。每個概念都通過詳細的解釋和實例代碼來進行深入的介紹。
Thumbnail
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
Thumbnail
本章節旨在介紹 C# 中函數的基本結構,包括訪問修飾符、返回類型、方法名稱、參數列表和方法體。同時,也介紹了函數的各種呼叫方式、參數傳遞方式和返回值類型。讀者可以通過本章節,深入理解 C# 中函數的使用和應用。
Thumbnail
C#程式由一或多個檔案組成,包含命名空間、類別、結構、介面、列舉和委派等型別。Main方法是C#應用程式的進入點。在C#中,註解用於在程式碼中添加說明,有單行和多行兩種類型。變數的定義需要指定變數的類型和名稱,可以一次為多個變數賦值。
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
物件導向設計的一個重點就是封裝,這有很多層面上的意義,但基本上就是控制物件的成員變數和方法的存取權。物件導向的封裝還跟繼承機制有關,這使得有一些時候我們逼不得已必須把函式定義在類別上,這種做法使得物件的功能變得難以拆解。封裝應該是模組的職責,並不需要再給物件相同的能力。 一般的模組系統就是把相