Unity C# | 除錯好工具:Debug.Log & 實值類型與參考類型測試

更新於 2022/11/10閱讀時間約 4 分鐘

前言

  思考Unity C# 這一個系列的定位,我認為決定學習「製作遊戲」的「程式設計C#」的你跟我,應該都對於Unity有一定了解,我不打算撰寫「如何操作Unity」(如果有需要,可以讓我知道)。
  如果不是基本操作,我依然會在這個系列特別說明,像是父子物件介紹及程式,主要範疇依然在程式中,如果未來有機會,我會再考慮撰寫「Unity Art」用來介紹Unity簡單的動畫和美術使用、「Unity Effect」程式特效。
  我在撰寫這系列的文章,我是處於理解宣告變數懂得會使用,並且懂得思考如何解決問題,在這段時間內我幾乎都是從Unity官方和英文教學去了解,破英文也漸漸能讀懂不少文章(笑)。

除錯工具:Debug.Log();

  這是一個相當重要的程式碼,並不是C#的Console類型,是Unity提供除錯程序中負責提供訊息的函式,雖然也可以用「Print();」,不過我看過所有的教學都是使用Debug.Log。
//Unity.Engine內
//class Debug內
public static void Log(object message);
public static void Log(object message, Object context);
//訊息會呈現在Console中。
  目前為止,我們幾乎都使用第一個,在Untiy官方的文件中有提到會跟Hierarchy中做連結,當點擊這則訊息會在Hierarchy中高亮呈現Debug的物件。
  寫程式就像是用電話指揮別人,「請工人007拿著黃磚頭到17號工地」然而你根本看不到黃磚頭有沒有到17號工地,工人是不是007,你並不是永遠確定你的指揮沒問題,你的理解完全正確。
  我在寫程式時,會在撰寫的初段瘋狂使用這段函式,譬如我今天要設計一段隨機方向的二維向量,我會撰寫玩隨機方向後測試一次,計時器製作完成再測試好幾次。
接下來簡單舉例Debug.Log的不同用途。
//協助呈現事件觸發,放在Update。
Debug.Log("按下滑鼠左鍵");
//用在持續改變的變數上,放在Update,像是計時器有沒有正確運作。
Debug.Log(timer);
//用來確認事件觸發,放在事件。
Debug.Log(某個布林);

測試:實值與參考

    在前一篇文章有提到,C#有分成兩種不同的儲存空間,並且分別放置兩種不同的類型,文章如下,接下來會做簡單的測試。

實值類型(Value Type)的運作方式:

int a = 7;
int b = a;
b = 5;
Debug.Log(a);
Console會呈現:7,每一個變數都有一個值去對應。

參考類型(Reference Type)的運作方式:

01.先創造一個參考類型
public class myclass
    {
        public int value;
        public  myclass(int value)
        {
            this.value = value;
        }
    }
//創建一個Class,呼叫myclass時的值,會寫入myclass本身攜帶的value。
02.用實質類型的方式去測試參考類型
myclass first = new myclass(7);
myclass second = first;
second.value = 5;
Debug.Log(first.value);
Console會呈現:5,Class frist的值被Second替代了。

結論

  • 實值類型的每一個變數都有一個對應的值,參考類型會偏向一個公用的資料夾
  • 實值類型像是每個同學的名子,小明的名子和小美的名子都有對應的值。
  • 參考類型則是班上的物品,小明的班級和小美的班級只有一個黑板。

結尾

  這篇文章意外的耗時間,如何用更淺顯易懂的說明來解釋這兩種不同的類型,並且呈現這兩種類型的實際變化是一個問題,不過寫著寫著就完成了。
為什麼會看到廣告
avatar-img
106會員
247內容數
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
瓶裝雪的沙龍 的其他內容
撰寫程式時,有沒有想過宣告的這些變數是怎麼運作的呢? 本文介紹了Value Type跟Reference Type,以及Variable的基本命名方式。
撰寫程式,如何命名很重要,本文舉例了兩種廣泛使用的命名法則,同時收錄了好程式的判斷依據和減少資源浪費的撰寫方式。
繼上次談論故事創創流派,這次來談談什麼是好故事
寫故事,有創造劇情為主和塑造人物為主兩種方式,他們各自的差異在哪裡?
寫作不是一條簡單的路,它非常容易上路,卻不容易走下去
在未來,很多事情都不再需要人力,你可能會因為你沒想過的原因取代,可能因為追逐不上眾人而離開。唯有寫作不會背叛你。不會就是不會,你也生不出來太多的東西...
撰寫程式時,有沒有想過宣告的這些變數是怎麼運作的呢? 本文介紹了Value Type跟Reference Type,以及Variable的基本命名方式。
撰寫程式,如何命名很重要,本文舉例了兩種廣泛使用的命名法則,同時收錄了好程式的判斷依據和減少資源浪費的撰寫方式。
繼上次談論故事創創流派,這次來談談什麼是好故事
寫故事,有創造劇情為主和塑造人物為主兩種方式,他們各自的差異在哪裡?
寫作不是一條簡單的路,它非常容易上路,卻不容易走下去
在未來,很多事情都不再需要人力,你可能會因為你沒想過的原因取代,可能因為追逐不上眾人而離開。唯有寫作不會背叛你。不會就是不會,你也生不出來太多的東西...
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
深入探討變數、型別和方法 正確撰寫 C# 程式碼 基本語法規則 程式碼行就像句子一樣,需要有某種分隔或結束字符。每一行 C# 程式碼(稱為陳述式)必須以分號結尾,以便程式碼編譯器處理。 例如,一個簡單的變數可以這樣寫: ```csharp public string FirstNam
C#編程基礎筆記 1. 變量(Variables) - 變量是編程的最基本單位 - 技術上是計算機內存中存儲值的一小部分 - 實際上是一個容器,可以存儲不同類型的信息 - 變量必須有唯一的名稱 - 充當值的佔位符 示例: ```csharp public int Current
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
這篇內容,將會講解什麼是變數範圍,以及與變數範圍相關的知識。包括變數範圍的簡介、實體變數、全域變數、局部變數、常數。
Thumbnail
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
Thumbnail
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
Thumbnail
內容涵蓋資料型別、型別轉換、自訂型別、元組型別、集合型別和字典型別等主題。文章首先詳述內建型別如bool、byte、char等的定義和使用,接著討論型別轉換,包括隱含轉換和明確轉換。之後文章介紹自訂型別的建立,以及元組、集合、陣列和字典型別的操作與例子。
Thumbnail
C#程式由一或多個檔案組成,包含命名空間、類別、結構、介面、列舉和委派等型別。Main方法是C#應用程式的進入點。在C#中,註解用於在程式碼中添加說明,有單行和多行兩種類型。變數的定義需要指定變數的類型和名稱,可以一次為多個變數賦值。
Thumbnail
C#是一種開源、跨平台、面向對象的編程語言,具有類型安全、泛型、模式匹配等特性。廣泛應用於桌面和Web應用程序、遊戲開發、移動應用、雲計算等領域。全球數十萬家公司像微軟、Unity Technologies、Stack Overflow等使用C#支持其業務。C#還提供豐富的進階學習資源和主題。
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
深入探討變數、型別和方法 正確撰寫 C# 程式碼 基本語法規則 程式碼行就像句子一樣,需要有某種分隔或結束字符。每一行 C# 程式碼(稱為陳述式)必須以分號結尾,以便程式碼編譯器處理。 例如,一個簡單的變數可以這樣寫: ```csharp public string FirstNam
C#編程基礎筆記 1. 變量(Variables) - 變量是編程的最基本單位 - 技術上是計算機內存中存儲值的一小部分 - 實際上是一個容器,可以存儲不同類型的信息 - 變量必須有唯一的名稱 - 充當值的佔位符 示例: ```csharp public int Current
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
這篇內容,將會講解什麼是變數範圍,以及與變數範圍相關的知識。包括變數範圍的簡介、實體變數、全域變數、局部變數、常數。
Thumbnail
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
Thumbnail
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
Thumbnail
內容涵蓋資料型別、型別轉換、自訂型別、元組型別、集合型別和字典型別等主題。文章首先詳述內建型別如bool、byte、char等的定義和使用,接著討論型別轉換,包括隱含轉換和明確轉換。之後文章介紹自訂型別的建立,以及元組、集合、陣列和字典型別的操作與例子。
Thumbnail
C#程式由一或多個檔案組成,包含命名空間、類別、結構、介面、列舉和委派等型別。Main方法是C#應用程式的進入點。在C#中,註解用於在程式碼中添加說明,有單行和多行兩種類型。變數的定義需要指定變數的類型和名稱,可以一次為多個變數賦值。
Thumbnail
C#是一種開源、跨平台、面向對象的編程語言,具有類型安全、泛型、模式匹配等特性。廣泛應用於桌面和Web應用程序、遊戲開發、移動應用、雲計算等領域。全球數十萬家公司像微軟、Unity Technologies、Stack Overflow等使用C#支持其業務。C#還提供豐富的進階學習資源和主題。
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料