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

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

前言

  思考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(某個布林);

Unity官方手冊:Debug.Log

測試:實值與參考

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

Unity C# | 類型(Type)&變數(Variable)

實值類型(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替代了。

結論

  • 實值類型的每一個變數都有一個對應的值,參考類型會偏向一個公用的資料夾


  • 實值類型像是每個同學的名子,小明的名子和小美的名子都有對應的值。
  • 參考類型則是班上的物品,小明的班級和小美的班級只有一個黑板。

結尾

  這篇文章意外的耗時間,如何用更淺顯易懂的說明來解釋這兩種不同的類型,並且呈現這兩種類型的實際變化是一個問題,不過寫著寫著就完成了。


raw-image


留言
avatar-img
留言分享你的想法!
avatar-img
瓶裝雪的沙龍
114會員
247內容數
你好,我是瓶裝雪!我是一名遊戲設計師!
瓶裝雪的沙龍的其他內容
2024/09/22
魔火術師是第三人稱動作射擊遊戲,屬於專題畢業製作,在畢業組成新的團隊後優化並上架。
Thumbnail
2024/09/22
魔火術師是第三人稱動作射擊遊戲,屬於專題畢業製作,在畢業組成新的團隊後優化並上架。
Thumbnail
2024/06/22
  遊戲將以不破壞遊戲體驗的情況下分析,避免劇透。因本文為求職遊戲企劃時所寫分析,故以遊戲企劃之角度撰寫文章,程式及美術僅簡易分析及解構。備註:後記有雷,如果有需要請避開。
Thumbnail
2024/06/22
  遊戲將以不破壞遊戲體驗的情況下分析,避免劇透。因本文為求職遊戲企劃時所寫分析,故以遊戲企劃之角度撰寫文章,程式及美術僅簡易分析及解構。備註:後記有雷,如果有需要請避開。
Thumbnail
2024/05/28
這篇文章將會講述新一代(young designer's exhibition 2024)的參賽與參展心得與體悟:從新一代概述到會場四天的分享,最後談談我的體悟與經驗。
Thumbnail
2024/05/28
這篇文章將會講述新一代(young designer's exhibition 2024)的參賽與參展心得與體悟:從新一代概述到會場四天的分享,最後談談我的體悟與經驗。
Thumbnail
看更多
你可能也想看
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 類別Class 創造類別之後就可以持續使用創建的類別來創建物件,以武器為例,在遊戲裡有不同的武器,但是他們的屬性是一樣的,我們就可以在一個類別裡面設定不同
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 類別Class 創造類別之後就可以持續使用創建的類別來創建物件,以武器為例,在遊戲裡有不同的武器,但是他們的屬性是一樣的,我們就可以在一個類別裡面設定不同
Thumbnail
C# 9.0 給 Unity 程式設計上帶來的便利
Thumbnail
C# 9.0 給 Unity 程式設計上帶來的便利
Thumbnail
這次分享資料形態中的資料型別部分,在VC#流程架構介紹中有提到它如同中文有不同的詞性,那C#程式中有哪些型別呢?我們就來看一看。 一、常用的資料型別 當然還有自訂義的型別這就要看怎麼定義了,之後看內容狀況再來提,那麼資料型態是為了要做宣告用途,告訴電腦你的資料是屬於什麼類別的,這樣在做後續資料時程式
Thumbnail
這次分享資料形態中的資料型別部分,在VC#流程架構介紹中有提到它如同中文有不同的詞性,那C#程式中有哪些型別呢?我們就來看一看。 一、常用的資料型別 當然還有自訂義的型別這就要看怎麼定義了,之後看內容狀況再來提,那麼資料型態是為了要做宣告用途,告訴電腦你的資料是屬於什麼類別的,這樣在做後續資料時程式
Thumbnail
這篇文章將會講述使用 C# 的類( Class ) 來讓欄位模組(module)化。
Thumbnail
這篇文章將會講述使用 C# 的類( Class ) 來讓欄位模組(module)化。
Thumbnail
這一篇文章將會從Microsoft的.NET Class Library開始介紹,在介紹具狀態和不具狀態,以及物件和new關鍵字。
Thumbnail
這一篇文章將會從Microsoft的.NET Class Library開始介紹,在介紹具狀態和不具狀態,以及物件和new關鍵字。
Thumbnail
本篇文章將會介紹C#的基礎構成和字串的使用,若想要更詳細的教學,可以參考前一篇文章,前往Microsoft官方教學學習。
Thumbnail
本篇文章將會介紹C#的基礎構成和字串的使用,若想要更詳細的教學,可以參考前一篇文章,前往Microsoft官方教學學習。
Thumbnail
本文章將會介紹結構(Struct)的定義、簡單介紹其應用,並且補充與序列化(SerializeFile)結合的方式。
Thumbnail
本文章將會介紹結構(Struct)的定義、簡單介紹其應用,並且補充與序列化(SerializeFile)結合的方式。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News