前言
本文的內容主要來自我的老師YouTubr Brackeys的影片:TOP 10 UNITY TIPS和TOP 10 UNITY TIPS #2。在此基礎上經過自己的實踐和篩選之後,選擇了幾個自己覺得還算有趣而平時又有所忽略的小技巧記錄在此和各位分享,希望大家可以一起跟著國外老師的Tips學到更多有趣的小技巧。
TOP 10 UNITY TIPS
TOP 10 UNITY TIPS #2
1. 編輯器染色

這也是這兩段教學影片的第一個小技巧,我自己也覺得很有趣。一個常見的工作情景是我們在調整場景內的某些組件參數時,沒有註意到自己是在Play Mode的模式下進行的,從而導致修改沒有被保存下來。
這個問題的關鍵在於是我們沒有意識到自己已經處在Game mode,如果我們能夠在修改參數的時候,清楚的意識到自己處於Play Mode,那麼我們自然可以通過Copy Component來保存數據或者是選擇在Editor Mode進行修改。因此,我們可以通過對編輯器染色來醒目的提醒自己,自己是否已經處於Play Mode了。
一個簡單的方法就是在Play Mode給編輯器染上不同的顏色:
Edit->Preference->Color->Playmode tint


在這裡,我們就可以修改Play Mode的編輯器顏色了,當然還有很多別的染色可以修改。
修改完之後,在Play Mode的編輯器大概效果是下面這樣的:
這樣,我們就能時刻意識到自己是否已經在Play Mode了。
2. 鎖定對象的Inspector視窗

這是第一段視頻的第三個小技巧,我覺得有趣的同時也很實用。還是一個實際的工作情景,場景中有很多對象,我們想創建一個管理器來容納這些對象,最簡單的方法就是在Hierarchy視窗中選擇那些對象,將它們拖入管理器的容器中。

但是,我們立馬就會發現一個問題,那就是我先選中管理器之後,再去多選所有需要被拖入管理器的對象時,Inspector視窗會變為此時所選中的被管理對象,而非管理器。這時,我們就用到了這條小技巧,我們可以鎖定管理器的Inspector視窗,選中多個被管理對象之後將它們拖入管理器的數組中。我們要做的只是勾選這個小鎖子圖標,之後就可以同時將多個對象通過鎖定的Inspector視窗拖入管理器的數組中了:

3.Inspector視窗的Debug Mode模式

這是第一段視頻的第四個小技巧,同樣是一個和Inspector視窗相關的技巧。我相信有一些朋友已經經常會用到了,但是我覺得這條也很實用,因此也在此和各位朋友分享。
這個常見的工作場景是這樣的:我有一些字段不想通過外部修改,因此聲明為private,但是又有在運行時觀察這些字段實時值的需求。

這時我們就可以點擊Inspector視窗右上角的下拉選單 ,可以看到它和一般視窗的下拉選單相比多了幾個選項。

默認狀況下,它處於Normal模式,我們這裡就可以選擇Debug模式了。更換模式之後,之前的Inspector視窗就變成了下面這樣子:

這樣,我們就可以既限製字段的訪問權限又觀察這些私有成員的變化了。
4. 利用Scene視窗設置相機數據


這是第一段教學影片中的第五個小技巧,我覺得這條技巧很受用。這次我們的工作情景變成了這樣:對很多人來說,在場景視圖中調整觀察的角度、位置等等是一件十分簡單的事情,但是如果真的要遊戲中達到同樣的效果,則必須去調整場景中的相機。
(左側是Scene視圖,右側是Game視圖)
相對來說,調整相機的過程更複雜,那麼有沒有什麼方法能夠直接讓攝像機應用和Scene視圖一樣的設置呢?這條技巧就是關於這個的。
首先選中場景中的攝像機,之後使用快捷鍵:
shift + ctrl + f
就可以把Scene視圖中的數據複製給選中的攝像機了。
當然,除了使用快捷鍵,我們還可以在菜單中選擇相應的操作。
GameObject->Align With View
也可以達到相同的效果。

5. 拓展編輯器
這一部分並非來自某一個技巧,而是和拓展編輯器相關的小技巧的集合。
在Unity中拓展編輯器,往往需要用到C#的各種特性(attribute)。
例如,我們可以使用[RangeAttribute]在Inspector視窗上顯示一個滑動條。
[Range(0, 10)]
public int publicInt;

如果,我們嫌Inspector視窗上顯示的各個字段太混亂沒有章法,那麼我們可以使用另外兩個特性來幫助我們對顯示在Inspector上的字段進行整理:[SpaceAttribute]和[HeaderAttribute]。
#region 字段
[Header("测试数据1")]
[Range(0, 10)]
public int publicInt;
public bool publicBool;
public float publicFloat;
public GameObject publicObj;
[Header("测试数据2")]
[Space(10)]
public List<GameObject> objsArray;
這樣,我們就可以為一堆字段分類顯示了。

如果,我們既想保證類的某個字段不被其他的類訪問修改,又想在Inspector視窗中修改這個字段的值的話,就可以採用private +
[SerializeField]屬性的方案。

[SerializeField]
private int privateInt;
6. 快速設置預覽最大化

這也是一個我感覺很有趣的小技巧,來自第二段視頻的第一個技巧。
利用這個技巧,我們可以快速的在不同的視圖中設置視圖的最大化。
比如場景視圖和遊戲視圖同時顯示,我們想要將場景視圖放到最大,只需要將鼠標懸停在場景視圖上,並同時按下快捷鍵:
shift + 空格
就可以將場景視圖設置為最大化。


如果調整動畫的話,Animator視圖是必不可少的,如果要將
Animator視圖最大化也只需要把鼠標停在Animator視圖上,同時按shift+空格快捷鍵。
不過在我的使用中,Game視圖不能在運行時進行這種操作,必須在暫停狀態或不在Play Mode時才起作用。
7. 更好的預覽模型

這條技巧來自第二段教學影片的第十條,我相信它能夠提供給我們在Editor中觀察模型的更好的體驗。一個可能的工作情景是這樣的,我們導入了一個模型,並希望在模型的Inspector視窗上預覽該模型時,常常只能拘泥於這個角落。

想要看的更清楚、更大似乎只能拖動整個Inspector視窗。
其實,我們可以輕鬆的將模型預覽的小窗口單獨拖出來。只需要鼠標右鍵單擊預覽窗口的上沿。

不信?你看是不是放大了很多?

小記
這些小技巧或許蠻多人在看教學影片前就知道了,但如果不知道這些小技巧的朋友可以將這篇當作一個有趣的Unity分享文看一下,裡面也是蠻多看到影片我才知道有這麼有趣的小技巧可以利用。