歡迎來到這個由三部分組成的關于Unity 3D的部落格系列的最後一篇文章。 在本系列中,我們将在Unity3D中使用豐富的控件建立一個簡單的3D遊戲。 第一部分介紹了如何設定Unity3D ,第二部分介紹了如何 使用C#控制Unity3D 。
在本系列的最後一篇文章中,我們将深入研究如何使用Unity3D将代碼實際制作成一個簡單的遊戲。
讓我們開始吧
讓我們建立一些關卡,進行更多類似遊戲的動作和最終目标。
首先,讓我們添加一些要堅持的世界牆。 為此,我們将添加一堆多元資料集,并使用以前的實踐來将它們縮放和定位。
讓我們轉到Unity編輯器中的“場景視圖”。 單擊“層次結構視圖”(未選擇任何内容),然後建立另一個空對象。 清除其變換(0,0,0),然後将此對象命名為“世界”。
然後,我們要清除一些不再需要的舊對象。 讓我們删除為測試添加的白色立方體和球體。
現在,選擇“
World
對象”,讓我們添加一個多元資料集。 然後,将其位置和比例尺值更改為相等的位置0、2.5、0和比例尺10、5、1。這将使我們的牆長10個機關,高5個機關,寬1個機關。
現在,讓我們的場景錄影機定位為具有自頂向下的視圖。 單擊“場景視圖”右上角的綠色Y。
現在将牆旋轉90度并将位置設定為-5、2.5、5。
然後讓我們添加一堵牆的副本。 右鍵單擊它,複制,然後将其X位置設定為5。
選擇我們擁有的兩堵牆,然後再次複制它們。 選中這兩個選項後,我們将其Z位置值設為15。
仍然選擇它們,再次複制,并将它們移到Z位置25和X位置-10。
接下來,我們将使用一個新工具将它們一起旋轉。 在右上角有一組5個按鈕。 我們将選擇中間按鈕,然後将Y旋轉設定為0。
然後,我們将選擇Wall(4)使其比例尺X比例尺30變長。
然後選擇Wall(2)并将其比例X也設定為30。
然後選擇Wall和Wall(3),複制它們,并将複制品設定為X位置-15。
然後選擇Wall(2),複制它,并将其X位置設定為-25。
現在,使我們的速度與本課程更加友好。
在“層次結構視圖”中選擇“
Player
對象,然後在檢查器編輯器中編輯值“前進速度”和“旋轉速度”。 我喜歡5代表前進,50代表轉向。
現在讓我們為遊戲添加一個目标。 讓我們添加一個具有碰撞器的區域,該碰撞器在越過終點線時觸發。
首先讓我們添加完成區域。 我們将使用另一個多元資料集來設定邊界。 在沒有選擇任何内容的層次結構視圖中,通過右鍵單擊3D對象->多元資料集添加多元資料集。 我們将其命名為Finish,将其位置設定為-10、2.5、15,并将其比例設定為5、5、5。
接下來,讓我們給它新的材料。 在“資源”視窗中右鍵單擊,然後單擊建立->材質。 讓我們将其Albedo設定為00B6006B,然後将其渲染模式更改為“透明”。 這使其繪制透明。
然後,我們需要編輯
Finish Cube Collider
; 而不是添加到實體上,我們希望它禁用碰撞并僅觸發。 我們通過選擇
Finish
對象來
Finish
此操作,然後在Box Collider下的Inspector中,選中“ Is Trigger”。 這将使引擎觸發
OnTrigger
方法。
然後,将腳本添加到Finish對象中,以控制完成時發生的情況。 我們将其
FinishController
,然後在MonoDevelop
FinishController
其打開。 然後,我們添加一個新函數,然後在輸入對象時進行記錄。
void OnTriggerEnter(Collider collider){
Debug.Log( “Finished” );
}
現在按播放。 我們應該能夠環遊世界并找到
Finish
立方體。 進入多元資料集後,我們應該能夠打開控制台視窗并看到消息“ Finished”。
現在,将其設定為在顯示屏上顯示一條消息以向使用者顯示,而不是僅記錄該消息。 我們将說他們完成了遊戲,然後添加了一個按鈕以重新啟動遊戲。
首先,我們需要将Text對象添加到我們的世界中。 轉到“層次結構視圖”,右鍵單擊,然後單擊“ UI =>文本”。 這将為我們的場景增加三件事:一是應在錄影機視口中顯示的文本對象,二是Canvas(即GUI後面的設定和層次結構),三是
EventSystem
,該事件系統可以引發和捕獲事件GUI就像拖放一樣。
在“場景視圖”中很難處理文本,是以讓我們切換到“遊戲視圖”。
現在,我們應該可以在右下角看到“新文本”字段。 讓我們在層次結構視圖中選擇Text對象。 在檢查器中,我們可以編輯文本。 将其位置設定為0、0、0,将寬度設定為500,将高度設定為500。将“文本”設定為“ You Finished”,格式為粗體,字型大小為80,顔色為紅色。
現在,讓我們打開
FinishedController Script
并添加一些代碼。 我們首先需要能夠通路UI庫。 是以,在腳本的頂部,我們需要使用
UnityEngine.UI
進行添加,然後添加一個
public Text finishedText
UnityEngine.UI
,以便可以通路我們的text元素。
現在回到編輯器。 讓我們單擊“完成”多元資料集對象,然後将“文本”對象拖到腳本的“完成文本”字段中。
現在,我們可以通路text元素。 要設定我們的文本,讓我們在
FinishedController
>
Start function finishedText.text = “”
編寫; 從某種意義上講,這将在我們運作遊戲時通過将文本保留為空白來隐藏文本。
現在,讓我們
OnTriggerEnter
函數,并添加代碼以在文本中寫上“ You Finished”。
現在按播放。 我們應該看到文本在遊戲開始時就消失了。 一旦找到飾面并跨入多元資料集,它将為您提供完成的文字。
現在讓我們做與文本相同的操作,但是這次添加一個按鈕。 選擇按鈕,然後在檢查器中,更改文本以重新啟動遊戲。 讓我們将其保留在預設位置。
現在,讓我們轉到
FinishController
并添加另一個公共UI元素public button
restartButton
。
然後傳回到“完成”對象的檢查器。 讓我們将按鈕拖動到
restartbutton
。
讓我們在啟動函數中添加一些代碼。 我們将希望隐藏代碼,以使我們無法一直看到它,還需要重置一些代碼。 首先,我們可以添加
restartButton.gameObject.SetActive(false)
隐藏,這将隐藏遊戲對象。 然後在
OnTriggerEnter
我們需要使用
restartButton.gameObject.SetActive(true);
将其反轉
restartButton.gameObject.SetActive(true);
。
然後在
FinishController
,添加一個名為
RestartGame()
的公共void函數。 這将是我們在按鈕
on click
控制器中調用的函數。 同樣在函數中,我們添加代碼以在按下場景時重新加載場景,使用
UnityEngine.SceneManagement;
在檔案頂部添加另一個using語句
UnityEngine.SceneManagement;
。 然後,将代碼添加到
RestartGame Function SceneManager.LoadScene(“Main Scene”);
。 它必須是您在字元串中調用場景的名稱,否則它将更改您的場景,而不是重新加載它(
Main.Scene
)。
現在,我們可以轉到“層次結構視圖”并選擇“按鈕”對象。 在檢查器中,底部有一個
On Click Controller
”。 我們隻想單擊+号并添加一個新的運作時。 然後,将
Finish
遊戲對象拖到下拉清單中,單擊
no
函數,然後選擇
FinishController
=>
RestartGame
。
現在玩吧。
您現在應該可以玩到遊戲結束。 觸發完成後,您應該會看到“您已完成”和“重新啟動遊戲”按鈕的消息。 如果您單擊“重新啟動遊戲”按鈕,它應該允許您再次播放。
包起來
結束!
現在,您應該能夠在帶有豐富控件的Unity3D中建立一個簡單的3D遊戲或應用程式。 請留下您的任何評論或問題。 謝謝閱讀!
翻譯自: https://www.javacodegeeks.com/2016/08/building-3d-simulations-unity3d-part-3.html