筆記 - Unity Learn

5 min read

learn.unity.com

Learn game development w/ Unity | Courses & tutorials in game design, VR, AR, & Real-time 3D | Unity Learn

Free tutorials, courses, and guided pathways for mastering real-time 3D development skills to make video games, VR, AR, and more.

概念

Excalidraw

GameObject

  • 所有物體的基本單位,如角色、環境、道具等。
  • 容器,可以附加各種元件 (Components) 來賦予其不同功能。

Component

  • 可附加在 GameObject 上的模塊,定義該 GameObject 的行為和屬性。
  • 常見元件包括 Transform, Renderer, Collider, Script 等。
  • 可透過 Script 來操控元件,改變 GameObject 的行為。

Transform

  • 每個 GameObject 的默認元件,管理物體的位置、旋轉和縮放。

Prefab

  • 一種藍圖,允許創建和儲存 GameObject 和 Components,
    可在遊戲中多次實例化 (類似於程式開發中的 Class)。

Scene

  • 遊戲的基本組成單位,每個 Scene 都是遊戲的一個獨立部分。
  • 可有多個 Scene 表示遊戲的不同部分,如選單、關卡、過場動畫。

Hierarchy

  • 顯示當前 Scene 中所有的 GameObject,按層次結構排列。
  • 通過拖放來改變 GameObject 之間的父子關係,影響它們的 Transform 繼承行為。

Inspector

  • 查看和編輯當前選中的 GameObject 的 Components。

Script

  • 使用 C# 語言編寫腳本,控制遊戲的邏輯和行為。

命名規則

GameObject

  1. 使用 PascalCase
    • GameObject 的名稱應該使用 PascalCase。這樣可以與 API 中的 Class 名保持一致。
    • 例如:PlayerCharacterEnemySpawnerMainCamera
  2. 描述性命名
    • 名稱應該能清楚地描述 GameObject 的用途或功能。
    • 例如:HealthPickup 而不是 Item123
  3. 層級結構清晰
    • 父子層級結構中的命名應該有意義,讓每個層級的物體名稱都能清楚地表達其作用。
    • 例如:UI/HealthBarEnvironment/Trees/OakTree

Assets

  1. 使用 PascalCase
    • Assets 命名也應該使用 PascalCase,這樣可以與程式碼和 GameObject 的命名規則保持一致。
    • 例如:PlayerModelEnemyTextureBackgroundMusic
  2. 分類前綴
    • 使用類型或功能的前綴來管理 Assets。這樣可以更快地找到特定類型的 Assets。
    • 例如:Model_PlayerTexture_EnemyAudio_BackgroundMusic
  3. 一致性
    • 保持命名的一致性有助於團隊成員快速理解和使用 Assets。
    • 例如:所有角色模型都以 Model_ 開頭,所有音效都以 Audio_ 開頭。

Scripts

  • 使用 PascalCase、camelCase 和 SCREAMING_SNAKE_CASE
    • PascalCase 和 camelCase 是 C# 語言的標準命名規則,使用這些規則可以保證程式碼風格的一致性,使得程式碼更易於閱讀和維護。
    • Unity 的內置 Class 和 Method 多數也都使用 PascalCase 和 camelCase。
  • 實際例子
    • Class, Struct, Method:PascalCase
    • Variable:camelCase
    • Constant:SCREAMING_SNAKE_CASE
PlayerController.cs
using UnityEngine; // 使用 PascalCase 命名 Class public class PlayerController : MonoBehaviour { // 使用 camelCase 命名 Variable private float playerHealth = 100.0f; private float maxSpeed = 10.0f; // 使用 SCREAMING_SNAKE_CASE 命名 Constant private const float MAX_HEALTH = 100.0f; // 使用 PascalCase 命名 Method void Start() { InitializePlayer(); } void Update() { MovePlayer(); } private void InitializePlayer() { playerHealth = MAX_HEALTH; } private void MovePlayer() { float move = Input.GetAxis("Horizontal") * maxSpeed * Time.deltaTime; transform.Translate(move, 0, 0); } }

常用快捷鍵

編輯與導航

  • Ctrl + S: 保存當前 Scene
  • Ctrl + Z: 撤回
  • Ctrl + Y: 重做
  • Ctrl + C: 複製
  • Ctrl + V: 貼上
  • Ctrl + X: 剪下
  • Ctrl + D: 複製並創建副本

選擇與移動

  • W: 移動工具 (Move Tool)
  • E: 旋轉工具 (Rotate Tool)
  • R: 縮放工具 (Scale Tool)
  • T: 矩形工具 (Rect Tool)
  • Y: 操作工具 (Transform Tool)
  • Q: 手形工具 (Hand Tool)
  • F: 聚焦物件 (Frame)
  • V: 吸附頂點 (Vertex Snap)

檢視與導航

  • 滑鼠右鍵 + WASD: 自由移動 (Flythrough mode)

  • 滑鼠右鍵 + E: 上升

  • 滑鼠右鍵 + Q: 下降

  • Shift: 加速

  • Alt + 滑鼠左鍵拖動: 旋轉視角

  • Alt + 滑鼠中鍵拖動: 平移視角

  • Alt + 滑鼠右鍵拖動: 縮放視角

  • 滑鼠中鍵滾動: 縮放

  • Ctrl + Shift + F: 設定 Camera 為當前視角的位置

遊玩模式

  • Ctrl + P: 切換遊玩模式
  • Ctrl + Shift + P: 停止播放並重置