分類:Unity、C#、VS2015
創建日期:2016-04-16
一、簡介
這一節先利用GUI顯示一個簡單的界面(以后還會專門介紹GUI),並解釋如何在VS2015中調試C#腳本。
本節例子的運行效果如下:
二、調試C#腳本的方式
有以下方式:
(1)利用斷點調試。斷點設置和取消的辦法與在控制台應用程序中利用斷點調試C#代碼的辦法相同。
(2)通過Debug類提供的方法在后台輸出調試信息。該辦法會直接在VS2015輸出窗口以及Unity的控制台(Console)中輸出調試信息。
(3)在Unity的播放預覽模式下,直接修改檢視器(Inspector)中顯示的變量的值,觀察不同值的效果。
三、本節例子的設計步驟
1、運行Unity,新建ch06Demo工程。
2、在Project視圖的Assets下添加一個名字為“6.2”的子文件夾,然后將默認的場景保存到該文件夾下,場景名稱為“Scene2.unity”。
3、在Assets/6.2文件夾下鼠標右擊添加一個文件名為ch06_2_1.cs的C#腳本,然后雙擊它在VS2015中打開該腳本,將其改為下面的內容:
using UnityEngine; using System.Collections; public class ch06_2_1 : MonoBehaviour { public int age = 20; private string text = ""; private string myName = ""; void OnGUI() { //用標簽顯示文本 GUILayout.Label(string.Format("你的年齡是:{0}\n", age)); GUILayout.Label("請輸入你的名字:"); //在文本區域中輸入名字 text = GUILayout.TextField(text); //按鈕 if (GUILayout.Button("提交")) { myName = text; } //當myName不為空的時候,說明我們已經提交了名字,則顯示名字 if (!string.IsNullOrEmpty(myName)) { GUILayout.Label("提交成功,名字:" + myName); } } }
4、按<Ctrl>+S保存該腳本。
5、切換到Unity,觀察Project下的文件夾,會發現6.2文件夾下有2個文件:

5、在層次視圖中鼠標右擊,添加一個空的GameObject:
6、選中GameObject,以便在檢視器中觀察它。然后將ch06_2_1.cs拖放到檢視器中得到下面的結果:

這時你就會發現,腳本中聲明為public的age變量,在GameObject的檢視器視圖中被自動封裝成了Age屬性,並顯示在腳本的下面。
說明:這就是為什么我們在C#腳本中用小寫字母開頭的age來聲明這個變量,因為Unity會將自動其封裝為用大寫字母開頭的同名屬性。
6、按【播放】按鈕進入預覽模式,即可看到運行效果:
7、在文本框中輸入名字,單擊【提交】按鈕,就會在界面中的下一行顯示出名字信息。
8、拖放檢視器中【Age】屬性的值(按住鼠標左右拖放),你就會發現該值在場景中也會跟着變化:

9、再次按【播放】按鈕結束預覽模式。
10、切換到VS2015,再要插入代碼處鼠標右擊,選擇【Implement MonoBehabious】,在彈出的窗口中,勾選Start(),如下圖所示:

單擊【OK】,它就會自動在當前光標處添加Start()方法。
11、將Start()改為下面的代碼:
public void Start() { Debug.Log("Age:"+age); //還可以輸出下面的分類信息 Debug.Log("普通信息"); Debug.LogWarning("警告信息"); Debug.LogError("錯誤信息"); }
12、選擇【Attach to Unity and Play】:

然后單擊它,此時,它就會自動從VS2015切換到Unity,並在Unity的Console選項卡中輸出下面的內容:
當然了,這樣做只是為了演示如何在VS2015中直接啟動Unity下的播放預覽模式,並在Unity的Console中輸出不同級別的信息(一般、警告、錯誤)。在實際的代碼中肯定不會這樣做,而是應該根據具體情況,決定在后台輸出哪一類的調試信息。
13、單擊Unity的【播放】按鈕結束預覽模式。
14、切換到VS2015,結束運行,然后注釋掉Start()方法中的語句,單擊【保存】或者【全部保存】:

好了,通過這個例子,你應該知道如何在VS2015中調試C#腳本了吧。
另外,你也可以直接在VS2015的解決方案資源管理器中項目的對應文件夾下添加新的C#腳本或者其他資源,或者創建新的子文件夾(VS2015中項目文件夾的結構和Unity工程中Project下文件夾的結構完全相同),保存后它都會自動將其同步到Unity的Assets下的對應文件夾中,這個“同步”過程完全是自動的,你所做的就是“創建”、“編輯”、“保存”。