iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0
Software Development

從零開始!使用chatGPT製作Unity回合制卡牌遊戲系列 第 19

從零開始!使用chatGPT製作Unity回合制卡牌遊戲 Day 19 - Unity Debug.Log

  • 分享至 

  • xImage
  •  

上一期我們淺嚐了程式碼的趣味,這次我們要防範未然。

「我們帶來:Unity Debug.Log。」
「這是我們有史以來推出最先進的Debug Tool。」
「最有能力的Unity Debug Tool,從古至今。」

其實在專研功能的時候,我認為最快的方法是:

1. 尋找教學文章,不限中文。例如按鈕那期就參考了這篇

2. 在遭遇文章看不懂時,適量使用官方文件。官方文件的主要目的就是要達到架構、原理、類型的澄清。

3. 搜尋影片教學。這種教學通常會有實作以及講解,但比較需要看個人喜好來去選擇。

4. 以上方法都嘗試過,且有功能不正常運作的情形,就只能這樣了。

「真的要這樣嗎,師傅!」
就只能這樣子了。

Unity Debug.Log

所以Unity Debug.Log是什麼?
其實就和我們在其他程式語言在發現bug的時候一樣。

「欸?奇怪,到底有沒有跑到這裡啊?」
「不對啊,這邊他算出來是多少?」
「Hello world!」

「Hello world!」

「Hello world!」

「Hello world!」

「Hello world!」

「Out of Memory: Insufficient memory to continue the execution of the program.」

那我們可以怎麼使用Unity Debug.Log呢?


一般用法之下

整數、浮點數、字串、布林值等都可以直接顯示。
一些可以被顯示名稱的遊戲物件也可以使用gameObject.name顯示名稱。
也能夠使用富文字的用法。
以下為Unity官方的示範文件

using UnityEngine;
using System.Collections;

public class MyGameClass : MonoBehaviour
{
    // A Light used in the Scene and needed by MyGameMethod().
    public Light light;

    void MyGameMethod()
    {
        // Message with a GameObject name. 
        // 使用函式顯示遊戲物件名稱
        Debug.Log("Hello: " + gameObject.name);

        // Message with light type. This is an Object example. 
        // 顯示物件Type
        Debug.Log(light.type);

        // Message using rich text. 
        // 使用富文字MarkUp
        Debug.Log("<color=red>Error: </color>AssetBundle not found");
    }
}

或是在參數中,一同傳入物件,可以達到在Unity Editor高亮顯示該遊戲物件的效果。

以下參考程式碼以及動態示意圖來源自How to use Debug Log in Unity (without affecting performance)

float health = 100;
void Start()
{
    // Logs the player's health, with a reference to this game object.
    Debug.Log("Player Health: " + health, gameObject);
}

動圖


所以為什麼要使用Unity Debug.Log而不是print就好呢?

print確實是比較容易撰寫,但Debug.Log對物件的支援是不一樣的。

同時,Debug.Log可以分Log的層級為Warning、Error,在Unity編輯界面可以依據不同程度的Log來分類。

還有一些特殊情形下是不得不使用Debug.Log的。

例如靜態函式內的print,因為沒有繼承自MonoBehaviour,則當然沒有他的函式print()可用。

而剛剛提到的Debug Warning和Debug Error該怎麼使用呢?
只要在Log後面加上後綴就好了。

void Start()
    {
        Debug.Log("This is a basic log message");
        Debug.LogWarning("This is a basic warning message");
        Debug.LogError("This is a basic error message");
    }

畫面會顯示這樣:
https://ithelp.ithome.com.tw/upload/images/20231003/20163235k8rXMOm5CC.png

分類的動圖一樣使用上面分享的那篇文章。
動動

學會了嗎?


上一篇
從零開始!使用chatGPT製作Unity回合制卡牌遊戲 Day 18 - 使用按鈕改變TextMeshPro文字內容
下一篇
從零開始!使用chatGPT製作Unity回合制卡牌遊戲 Day 20 - 更多Unity Debug功能!
系列文
從零開始!使用chatGPT製作Unity回合制卡牌遊戲30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言