3 - Setting up a Scene
概述
在教學的第3部分中,介紹了如何使用Quantum設定基本場景和創建實體。
打開遊戲場景
Quantum SDK附帶了幫助您入門的檔案。
在QuantumUser/Scenes
資料夾中有一個QuantumGameScene
場景。這個場景是Quantum 100系列的起點。打開QuantumGameScene
場景。透過前往Unity選單中的「檔案>另存為」並在「資源/場景」資料夾中另存為「AsteroidsGameplay」來創建場景的副本。

場景中有一些值得注意的遊戲物件。
QuantumMap
:在Quantum中創建場景的工作流程與在Unity中為單人遊戲創建場景幾乎完全相同。地圖資料元件嵌入場景中的實體、靜態碰撞器和NavMesh資料,以便確定性Quantum引擎可以使用它們。QuantumEntityViewUpdater
負責具現化和銷毀遊戲程式碼在運行時創建的實體(視圖)的遊戲物件表示。- 帶有
Debug Input
指令碼的QuantumDebugInput
將Unity輸入傳遞到確定性Quantum引擎的方法示例。它將在本系列稍後進行擴展。 QuantumStats
遊戲物件顯示了Game
編輯器視窗左側可見的統計視窗。它顯示了許多關於活躍Quantum模擬的有用統計資料。
地圖資料資產物件
Quantum資產是不可變的資料容器,用於設置遊戲模擬。Unity中的每個場景都有一個連結到此場景的相應Quantum地圖資源。此資源包含有關場景的確定性資訊,例如場景中嵌入到資產中的物件和碰撞器。
創建一個新的Resources
資料夾,然後按右鍵點擊該資料夾,選擇Create > Quantum > Asset
,然後在清單介面快顯視窗中選擇Map
。將新資產命名為AsteroidsMap
。

注意: 使用Resources
資料夾是為了讓Quantum能夠載入資產。所有Quantum資產都需要放在Resources
資料夾中或標記為可定址。
按一下場景中的QuantumMap
物件。現時,已有的QuantumMap
資產仍連結到場景。將新的AsteroidsMap
資產放入檢查器的asset
欄位,用新資產替換它,然後儲存場景。儲存場景時,將在Resources
資料夾中生成一個新的AsteroidsMap_mesh
資產。這包含了地圖中關於物理碰撞器的資訊。

相機與燈光
調整Main Camera
的位置設定為(0, 10, 0)
並將其旋轉設定為(90, 0 , 0)
。將背景顏色設定為黑色,並將正交投影大小調整為20。

接下來,在場景中新增一個帶有柔和黃色調的Directional Light
。

創建實體
創建一個新的2D圓實體。(按右鍵點擊層次視窗,然後選擇Quantum > 2D > Circle Entity
)

將新創建的遊戲物件重命名為AsteroidLarge
。刪除網格篩選器和網格渲染器元件。調整QuantumEntityPrototype
上的PhysicsCollider2D
,使其半徑為1.1。最後,勾選PhysicsBody2D
框,將實體轉換為具有剛體的基於物理的實體。

按右鍵點擊AsteroidLarge遊戲物件,然後選擇Create > 3D Object > Cube
以創建一個立方體作為小行星的下層物件。這個下層將持有小行星的視覺模型。將其重命名為Model
。
沒有必要將視覺效果放在單獨的下層上,這只是為了使元件更有條理。
從物件移除Box Collider
,將比例設定為1.5,並新增旋轉以使視覺更令人愉悅(在這種情況下使用了(25,17,-53))。

進入播放模式。您可以看到小行星實體由於重力而慢慢從畫面上掉下來。(重力稍後將被停用,力將手動施加到小行星上)

Quantum中的實體
在Quantum中,所有遊戲都是由實體、系統和靜態資料資產驅動的,這些資產封裝了靜態碰撞器資訊等資料。Quantum模擬程式碼不處理任何渲染,但是EntityViewUpdater在Unity中為每個具有EntityPrototype和EntityView MonoBehaviour的實體具現化一個GameObject。此視圖GameObject充當實體的視覺表示。視圖GameObjects的轉換也由EntityViewUpdater從其各自的實體自動同步。
每個實體都有一組元件。元件不是Unity MonoBehaviors,而是透過EntityPrototype MonoBehiviors的Enity Component
清單或程式碼而新增到實體中。透過勾選實體原型元件中的核取方塊來新增某些元件,例如立方體實體上的PhysicsBody2D
元件。
Quantum有一個狀態檢查器,可以在運行時顯示實體元件的狀態。在Unity的選單列中,按一下Window > Quantum > State Inspector
。這將打開狀態檢查器視窗。進入播放模式。在狀態檢查器視窗中展開LOCALDEBUG
條目和Entities
條目。小行星實體被列為實體1。按一下它以顯示實體上的所有元件及其當前狀態。

創建預製件
Quantum實體可以變成常規的Unity預製件。將AsteroidLarge
遊戲物件放入Resources
資料夾中以創建預製件,然後將其從場景中刪除。自動創建AsteroidLargeEntityPrototype
資產物件。該資產持有了Quantum模擬所使用的實體的嵌入資料。
