小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

【新提醒】【大牛干貨:100條Unity基礎(chǔ)小貼士】

 鴻蛟家平 2019-01-31
1. 高亮選擇
在Scene面板右上角的Gizmo下拉列表中,可以通過設(shè)置Selection Outline選項決定是否在選中物體時顯示邊緣高亮的標(biāo)識。





2.Pixel Perfect Camera
在攝像機上掛載Pixel Perfect Camera組件能夠使2D像素風(fēng)格的游戲畫面更加整潔清晰。此組件需要使用Package Manager安裝2D Pixel Perfect包。





3.以Y軸為依據(jù)進行Sprite排序
對于2D游戲,將Transparency Sort Mode (Edit > Project Settings > Graphics ) 設(shè)置為Custom Axis,然后設(shè)置Transparency Sort Axis,場景中的Sprite可以根據(jù)Y軸進行排序。如下圖所示,當(dāng)設(shè)置為(0,1,0)時,Y坐標(biāo)相對較大的Sprite排在Y坐標(biāo)相對較小的Sprite之下,當(dāng)設(shè)置為(0,-1,0)時,則相反。






4. 延遲銷毀游戲?qū)ο?/strong>
默認(rèn)情況下,使用Destroy()方法會立即銷毀游戲?qū)ο?,如果想延遲一段時間再銷毀,可在此方法中傳遞一個時間參數(shù),如下:

[AppleScript] 純文本查看 復(fù)制代碼
Destroy(gameObject,2f);



5. 快速新建基于自定義Shader的材質(zhì)
在Project面板中選中一個自定義Shader,右鍵選擇新建材質(zhì)(Create>Material),則材質(zhì)默認(rèn)使用的著色器為z之前選擇的Shader,同時材質(zhì)名稱為Shader的名稱。


6. 腳本不掛載到游戲?qū)ο髨?zhí)行
通常情況下,新建的腳本要掛載到游戲?qū)ο笊喜拍苓\行,如果在腳本中的方法前使用[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)],可以不用掛載到任何游戲?qū)ο笊霞纯稍诔绦蜻\行時執(zhí)行此方法,方便在在程序初始化前做一些額外的初始化工作。如下代碼所示:


[AppleScript] 純文本查看 復(fù)制代碼
1
2
3
4
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]
public static void DoSomething()
{
    Debug.Log("It's the start of the game");
}




7. 保存程序運行時組件屬性的改變
在程序運行時改變組件的各屬性值,當(dāng)停止運行后,這些改變將重置為編輯狀態(tài)下的數(shù)值,。程序運行時改變了組件的屬性值,可以點擊組件右上角的齒輪按鈕,選擇Copy Component命令,停止播放后,在相同的組件上,執(zhí)行Paste Component Value,從而能夠保存在運行時對該組件做出的改變。




8. 獲取一個隨機布爾值
我們知道Random.value能夠返回0~1之間的隨機數(shù),所以讓此隨機數(shù)與0.5f進行比較,就能夠獲取一個隨機的布爾值True或者False,如下代碼所示:
[AppleScript] 純文本查看 復(fù)制代碼
bool trueOrFalse = (Random.value > 0.5f);




9. 使用Struct代替Class
如果數(shù)據(jù)結(jié)構(gòu)僅保存了有限的幾個數(shù)值變量,可以考慮使用struct代替Class,因為Class實例由垃圾回收機制來保證內(nèi)存的回收處理;而struct變量使用完后立即自動解除內(nèi)存分配。




10. Visual Studio 自動語句補全


當(dāng)使用Visual Studio進行代碼編寫時,可雙擊Tab鍵來輔助完成像if、for、switch等語句的補全。

11.協(xié)程嵌套
在一個協(xié)程里開啟另外一個協(xié)程,可使用以下方法:
[AppleScript] 純文本查看 復(fù)制代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
void Start()
{
    StartCoroutine(FirstCo());
}
IEnumerator FirstCo()
{
    yield return StartCoroutine(SecondCo());
}
IEnumerator SecondCo()
{
    yield return 0;
}



12.腳本變量參與動畫制作
使用工具還可以改變腳本的變量。




13/14. Animation窗口快捷鍵
在Animation窗口中,按下Ctrl+A,所有關(guān)鍵幀將集中顯示在窗口中;選擇某些關(guān)鍵幀,按下F鍵,可將它們居中顯示在窗口中;按下C鍵,可以在曲線視圖和關(guān)鍵幀視圖間切換;按下K鍵添加關(guān)鍵幀。


15. 反向播放動畫
在Animator窗口中,設(shè)置動畫的Speed屬性為-1可使動畫片段反向播放。


16.快速比較距離
將兩點之間的距離與一個固定距離進行比較時,可使兩點相減然后取平方(即sqrMagnitude),然后用該值與某個距離值的平方進行比較。不建議使用Vector3.Distance方法獲取兩點之間距離,然后與給定的距離值進行比較。因為Vector3.Distance(a,b) 相當(dāng)于 (a-b).magnitude,即求平方后開根,而sqrMagnitude方法省去了求平方根的操作,所以比magnitude執(zhí)行快。


建議:
[AppleScript] 純文本查看 復(fù)制代碼
1
2
if ((pointA - pointB).sqrMagnitude < dist * dist)
{
}




不建議:

[AppleScript] 純文本查看 復(fù)制代碼
1
2
if (Vector3.Distance(pointA, pointB) < dist)
{
}


17. 使用TextMeshPro
使用TextMeshPro能夠獲得更多的文字控制自由度,并且能夠有效防止文字邊緣模糊。如下圖所示,第一行文字通過"Create > UI > Text"命令創(chuàng)建,第二行文字通過"Create > UI > TextMeshPro - Text"命令創(chuàng)建。



18.在Inspector面板中顯示私有變量
將私有變量標(biāo)記為SerializeField,可在Inspector面板中將其顯示。
[AppleScript] 純文本查看 復(fù)制代碼
1
[SerializeField]
private int myNumber = 20;




19. 在Inspector面板中隱藏公有變量
如果不希望在Inspector面板中顯示公有變量,可將其標(biāo)記為[HideInInspector]。
[AppleScript] 純文本查看 復(fù)制代碼
1
[HideInInspector]
public int myNumber = 20;




20. 變量重命名后繼續(xù)保持值
當(dāng)變量重命名后,如果希望繼續(xù)保留其數(shù)值,可使用FormerlySerializedAs,如下代碼所示:
[AppleScript] 純文本查看 復(fù)制代碼
1
[FormerlySerializedAs("hp")]
public int myNumber = 20;


需要引用命名空間:
[AppleScript] 純文本查看 復(fù)制代碼
using UnityEngine.Serialization;




21.使用文件夾快捷方式
可將經(jīng)常訪問的文件夾的快捷方式拖入Project面板中,雙擊快捷方式可快速打開此目錄。




22/23.F與Shift+F
選擇游戲?qū)ο?,按下F鍵,可將Scene的視口中央移動到該游戲?qū)ο筇?;按下Shift+F,可將視口與該游戲?qū)ο箧i定,即無論如何移動游戲對象,視口中央始終跟隨此游戲?qū)ο蟆?/font>


24.對齊Scene與Game視圖
在Hierarchy面板中選擇攝像機,按下Ctrl+Shift+F,可將攝像機移動到能夠呈現(xiàn)Scene窗口中內(nèi)容的位置。




25. CompareTag方法
當(dāng)對游戲?qū)ο蟮腡ag進行比對時,從性能考慮,可使用CompareTag方法,不建議使用雙等號進行判斷。
建議:


[AppleScript] 純文本查看 復(fù)制代碼
1
2
3
if (gameObject.CompareTag("Enemy"))
{
}


不建議:
[AppleScript] 純文本查看 復(fù)制代碼
1
2
3
if (gameObject.tag == "Enemy")
{
}




26.使用空游戲?qū)ο笞鳛榉指舴?/strong>
在Hierarchy面板中,可以使用名稱中帶有分隔符的空游戲?qū)ο筮M行組織管理。





27. 查找含有某組件的游戲?qū)ο?/strong>
如果需要查找掛載了某個組件的游戲?qū)ο螅苯釉贖ierarchy面板的搜索框中輸入組件名稱即可,需要注意組件名稱中的空格,比如搜索”MeshCollider“而不是”Mesh Collider“。





28. 查找某種類型的資源
在Project面板中的搜索框中輸入"t:"+資源類型,可以過濾顯示某種類型的資源,比如輸入"t:scene",會過濾出所有場景文件,輸入"t:texture",則會顯示所有貼圖。





29. 移動代碼行
在Visual Studio中,使用快捷鍵Alt+上下鍵,可以在代碼塊中快速上移/下移光標(biāo)所在的代碼行,不用復(fù)制粘貼。


30.快速查看組件文檔
點擊組件右上角的文檔按鈕,可快速打開關(guān)于當(dāng)前組件的文檔。建議下載離線文檔,以便更加快速打開文檔,如果沒有下載,Unity將打開在線文檔。





31.文檔版本歷史

在Unity文檔中點擊Documentation Version鏈接,可查看不同版本的文檔。






32. 展開/折疊所有節(jié)點

在Hierarchy面板中,按下Alt鍵,鼠標(biāo)左鍵點擊樹形節(jié)點,可展開/折疊當(dāng)前節(jié)點下的所有子節(jié)點。




33.保存編輯器窗口布局
Unity窗口布局可自定義,調(diào)整完畢以后,如果希望以后繼續(xù)沿用此布局,點擊編輯器右上角的Layout下拉列表,選擇命令Save Layout,可將當(dāng)前窗口布局進行保存。



34+35. 改變編輯器顏色
選擇命令Editor > Preferences命令,可自定義編輯器當(dāng)前主題的顏色。




修改Playmode tint的顏色值,可以改變編輯器在運行模式時的顏色,以提醒開發(fā)者此時為運行模式。


36.開關(guān)場景特效
在Scene面板頂部的圖片下拉列表中,可選擇開關(guān)某種類型的特效。





37.MenuItem屬性
要在編輯器的菜單欄中選擇執(zhí)行編寫的函數(shù),可在函數(shù)前添加MenuItem屬性,如下代碼所示:


[AppleScript] 純文本查看 復(fù)制代碼
1
2
3
4
[MenuItem("MyMenu/Do Something")]
static void DoSomething()
{
}





38.ContextMenu

使用ContextMenu屬性標(biāo)記函數(shù),能夠在腳本所在的上下文菜單中調(diào)用,如下代碼所示:
[AppleScript] 純文本查看 復(fù)制代碼
1
2
3
4
[ContextMenu("Do Something")]
void DoSomething()
{
     
}





39+40. 隱藏和鎖定層

在編輯器右上角的Layers下拉列表中,點擊對應(yīng)層右側(cè)的眼睛按鈕,可以隱藏或顯示某個層上的對象;點擊鎖按鈕,可對某個層進行鎖定或解鎖,當(dāng)被鎖定后,該層上的所有對象將不能被選擇。




41.層子菜單
當(dāng)創(chuàng)建層時,使用斜杠符進行路徑式命名可以為層添加子菜單,可以更好地組織項目。






42. 使用Scripting Define Symbols定義腳本
在不同的目標(biāo)平臺下添加 Scripting Define Symbols(Project Settings > Player > Scripting Define Symbols),以分號分隔,可以將這些符號像使用Unity內(nèi)置標(biāo)簽一樣用作#if指令的條件。


43+44.顏色
在使用Color控件的滴管工具進行顏色選擇時,可以拾取Unity編輯器之外的顏色。



在顏色屬性之間也可以使用右鍵命令進行復(fù)制粘貼。





45.最大化窗口
使用快捷鍵Shift+空格鍵,可以快速最大化鼠標(biāo)所在的窗口,而不用選擇窗口右上角的Maximize命令


46. 序列化Struct和Class
在數(shù)據(jù)類型Struct和Class聲明前使用[System.Serializable],可以將其顯示在Inspector面板中進行賦值。


47.碰撞矩陣
在 Edit > Project Settings... > Physics 中,通過設(shè)置Layer Collision Matrix 可以決定能夠互相碰撞的層。





48.Collider相互作用矩陣
當(dāng)兩個對象發(fā)生碰撞時,會發(fā)送不同的碰撞事件,如OnTriggerEnter、OnCollisionEnter等等,這取決于具體的碰撞體設(shè)置,下表列出了不同類型的碰撞體發(fā)生碰撞時所能發(fā)出的事件類型。詳情可參考Unity 官方文檔:https://docs./Manual/CollidersOverview.html





49. 數(shù)值輸入
在Inspector面板中涉及到數(shù)值輸入的字段,不僅可以直接輸入數(shù)據(jù),還可以在輸入框中輸入數(shù)學(xué)表達(dá)式,按下回車后Unity會將計算結(jié)果填充到輸入框中。



50.鎖定Inspector
點擊Inspector右上角的鎖定按鈕,或在上下文菜單中選擇Lock命令,可以將當(dāng)前選中游戲?qū)ο蟮腎nspector面板鎖定。然后選擇Add Tab > Inspector命令,添加一個Inspector,這樣能夠方便在兩個游戲?qū)ο笾g互相拷貝組件數(shù)據(jù)。




51.Inspector調(diào)試模式
在Inspector面板右上角的下拉菜單中,選擇Debug命令,啟動調(diào)試模式,此時將顯示組件包含的所有變量,包括私有變量,當(dāng)運行編輯器時,可以實時查看各組件所有變量的變化。


52.高亮顯示Debug.Log對應(yīng)的游戲?qū)ο?/font>
當(dāng)使用Debug.Log方法輸出信息時,可將gameObject作為此方法的第二個參數(shù),當(dāng)程序運行時,點擊Console面板中對應(yīng)的輸出信息,可在Hierarchy面板中高亮顯示掛載了此腳本的游戲?qū)ο蟆?/font>


[AppleScript] 純文本查看 復(fù)制代碼
1
2
3
void Start()
{
    Debug.Log("this is a message",gameObject);
}




53.風(fēng)格化Debug.Log的輸出信息
當(dāng)Debug.Log方法的輸出消息是字符串時,可以使用富文本標(biāo)記來強調(diào)內(nèi)容。如下代碼所示:
[AppleScript] 純文本查看 復(fù)制代碼
Debug.Log("<color=red>Fatal error:</color> AssetBundle not found");

輸出效果:





54.繪制調(diào)試數(shù)據(jù)
當(dāng)變量隨著時間的推進而改變時,可使用AnimationCurve實例在程序運行時繪制此數(shù)據(jù),如下代碼所示:


[AppleScript] 純文本查看 復(fù)制代碼
1
2
3
4
5
public AnimationCurve plot = new AnimationCurve();
void Update()
{
    float value = Mathf.Sin(Time.time);
    plot.AddKey(Time.realtimeSinceStartup, value);
}




返回Unity編輯器,運行程序,點擊plot屬性,此時會隨著時間動態(tài)繪制數(shù)據(jù)的變化情況,如下圖所示:





55.快速新建腳本并掛載到游戲?qū)ο笊?/strong>
選擇游戲?qū)ο?,在Inspector面板上點擊Add Component按鈕,在搜索框中輸入新建的腳本名稱并回車,可新建腳本并掛載到目標(biāo)游戲?qū)ο笊?,雙擊腳本名稱進行腳本編寫。


56.導(dǎo)入第三方項目文件
Unity能夠讀取部分第三方創(chuàng)作工具保存的項目文件,比如Photoshop的PSD,Blender的源文件等,不需要從這些軟件導(dǎo)出中轉(zhuǎn)文件格式,比如Jpg、FBX等。


57.導(dǎo)入后保留PSD文件的圖層結(jié)構(gòu)
將PSD文件另存為PSB格式,將其導(dǎo)入Unity后可保留文件圖層結(jié)構(gòu),此時需要在Package Manager中安裝2D PSD Importer,并且在文件的導(dǎo)入屬性中設(shè)置Texture Type 為Sprite (2D and UI)。





58+59.為游戲?qū)ο笾付?自定義圖標(biāo)
點擊游戲?qū)ο驣nspector面板左上角的下拉菜單,可為游戲?qū)ο笾付ㄒ粋€特定顏色的標(biāo)識,這對空游戲?qū)ο蟮目梢暬脖容^有用。點擊Other...按鈕,可以用自己的圖片來進行標(biāo)識。



60/61.顯示/隱藏Gizmo
點擊Scene面板右上角的Gizmo下拉列表,可以選擇顯示或隱藏某類組件的圖標(biāo)和Gizmo標(biāo)識;也可點擊Game面板右上角的Gizmo按鈕,顯示或隱藏所有資源的圖標(biāo)和Gizmo。





62.字符串拼接
可使用StringBuilder進行字符串的拼接,不要使用字符串相加的形式,因為這樣會帶來額外的內(nèi)存垃圾。如下代碼所示:


[AppleScript] 純文本查看 復(fù)制代碼
1
StringBuilder myStr = new StringBuilder();
myStr.Append("Hello").Append("The").Append("World");




不建議:


[AppleScript] 純文本查看 復(fù)制代碼
string myStr = "Hello" + "the" + "world";

使用StringBuilder需要引用命名空間System.Text。


63.使用ScriptableObjects管理游戲數(shù)據(jù)
對于游戲數(shù)據(jù)比如武器、成就等,可使用ScriptableObjects在編輯器中進行有效組織。如下代碼所示:
[AppleScript] 純文本查看 復(fù)制代碼
1
2
3
4
5
6
7
using UnityEngine;[/color][/size][/font]
[font=微軟雅黑][size=3][color=rgb(26, 26, 26)][CreateAssetMenu(fileName = "New Item", menuName = "Item")]
public class NewBehaviourScript : ScriptableObject
{
    public string ItemName;
    public int ItemLevel;
    public Texture2D ItemIcon;
}







64.編輯器播放時修改腳本后的處理
選擇 Edit > Preferences > General 命令,在Script Changes While Playing中,可以設(shè)置編輯器在播放狀態(tài)下如果腳本發(fā)生改變后的處理,比如停止播放重新編譯等。





65.自定義窗口
將類繼承自EditorWindow,可以添加自定義窗口,在此基礎(chǔ)上編寫一些命令和工具,如下代碼所示:

[AppleScript] 純文本查看 復(fù)制代碼
01
02
03
04
05
06
07
08
09
10
using UnityEngine;
using UnityEditor;
public class ExampleWindow : EditorWindow
{
    [MenuItem("Window/Example")]
    public static void ShowWindow()
    {
        GetWindow<ExampleWindow>("Example");
    }
}




執(zhí)行效果:





66.自定義Inspector

也可對Inspector進行自定義,添加一些控件。如下代碼所示:

[AppleScript] 純文本查看 復(fù)制代碼
01
02
03
04
05
06
07
08
09
10
11
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(Sphere))]
public class SphereEditor : Editor
{
    public override void OnInspectorGUI()
    {
        GUILayout.Label("自定義Inspector");
        GUILayout.Button("確定");
    }
}




執(zhí)行效果:



67.工具快捷鍵

使用快捷鍵Q、W、E、R、T、Y切換移動、旋轉(zhuǎn)、縮放等工具。

68.使用RectTransform工具縮放3D物體
RectTransform工具一般用于縮放2D物體,對3D物體使用該工具可以在某個二維平面對其進行縮放,這取決于物體與視口的關(guān)系。



69+70+71.吸附
按下Ctrl鍵對游戲?qū)ο筮M行移動、旋轉(zhuǎn)、縮放,將以步進的形式進行操作,選擇Editor > Snap Settings...命令,可設(shè)置步進大小。





按下V鍵,在游戲?qū)ο笊线x擇頂點進行拖放,將以此頂點為基礎(chǔ),把游戲?qū)ο笪降狡渌旤c的位置。


72. 管理程序集
在Project面板中選擇Create > Assembly Definition 命令,創(chuàng)建程序集文件,然后將其拖放到指定的文件夾中,定義腳本依賴關(guān)系,可以確保腳本更改后,只會重新生成必需的程序集,從而減少編譯時間。


73.WaitForSecondsRealtime
當(dāng)時間縮放為0時(即Time.timeScale=0f),waitForSeconds方法將不會停止等待,后續(xù)代碼也不會執(zhí)行,此時可使用WaitForSecondsRealtime方法,如下代碼所示:


[AppleScript] 純文本查看 復(fù)制代碼
1
Time.timeScale = 0f;
yield return new WaitForSecondsRealtime(1f);




74+75.緩存組件引用
當(dāng)某組件需要被頻繁訪問時,可在初始化時預(yù)先獲取該組件的引用,從而避免在訪問時由于重復(fù)獲取引起的性能開銷。


[AppleScript] 純文本查看 復(fù)制代碼
01
02
03
04
05
06
07
08
09
10
private Rigidbody rb;
void Start()
{
    rb = GetComponent<Rigidbody>();
}
void Update()
{
    rb.AddForce(0f, -2f, 0f);
}

同樣的情況,也不要在使用Camera.main獲取攝像機組件,尤其避免使用類似以下方法:
[AppleScript] 純文本查看 復(fù)制代碼
Camera cam = GameObject.FindGameObjectWithTag("MainCamera").GetComponent<Camera>();

這樣會帶來更大的性能消耗。


76.字符串性能優(yōu)化
如果某字符串在整個應(yīng)用過程中不會改變且被頻繁使用,可將其存儲在靜態(tài)只讀變量中,從而節(jié)省內(nèi)存分配,如下代碼所示:
[AppleScript] 純文本查看 復(fù)制代碼
1
2
3
4
5
static readonly string Fire1 = "Fire1";
void Update()
{
    Input.GetAxis(Fire1);
}




不建議:

[AppleScript] 純文本查看 復(fù)制代碼
1
2
3
void Update()
{
    Input.GetAxis("Fire1");
}




77/78/79/80.方便使用的元數(shù)據(jù)
為變量添加一些屬性可使它們在Inspector面板中更容易被使用。在變量前添加Range屬性可將其限定在某個范圍內(nèi)使用滑塊進行調(diào)節(jié),如下代碼所示:
[AppleScript] 純文本查看 復(fù)制代碼
1
[Range(0f,10f)]
public float speed = 1f;




執(zhí)行效果:

兩個變量聲明之間加入[Space]可在Inspector中添加一個空行;添加Header可在Inspector面板中加入一段文字,如下代碼所示:
[AppleScript] 純文本查看 復(fù)制代碼
1
2
3
[Header("Player Settings")][/color][/size][/font]
[font=微軟雅黑][size=3][color=rgb(26, 26, 26)]
public float speed = 1f;
public int size = 10;


執(zhí)行效果:



在變量前加入Tooltip,當(dāng)鼠標(biāo)懸停在Inspector面板中的變量上時,可顯示關(guān)于此變量的說明,如下代碼所示:
[AppleScript] 純文本查看 復(fù)制代碼
1
[Tooltip("移動速度")]
public float speed = 1f;

執(zhí)行效果:




81.在Unit編輯器中訪問Asset Store
Asset Store可在Unity編輯器和網(wǎng)頁瀏覽器中訪問。(此條有充數(shù)嫌疑)


82.合并場景
在Project面板中,將一個場景文件拖到另外一個上,可將場景進行合并。


83/84.創(chuàng)建游戲?qū)ο?數(shù)組元素副本快捷鍵
選擇一個游戲?qū)ο?,使用快捷鍵Ctrl+D可快速創(chuàng)建該游戲?qū)ο蟮母北?,同樣的方法可?chuàng)建數(shù)組元素的副本。


85.組件預(yù)設(shè)
當(dāng)完成某個組件的屬性設(shè)置后,可點擊組件右上角的預(yù)設(shè)按鈕,將當(dāng)前屬性設(shè)置保存為預(yù)設(shè),方便后續(xù)進行組件設(shè)置時使用。



86.遍歷游戲?qū)ο笏凶游矬w
可使用foreach循環(huán)遍歷游戲?qū)ο蟮乃凶游矬w,如下代碼所示:
[AppleScript] 純文本查看 復(fù)制代碼
1
2
3
foreach (Transform child in transform)
{
    Debug.Log(child.name);
}




87.通過腳本改變游戲?qū)ο笤贖ierarchy中的順序
使用transform.SetSiblingIndex方法可以設(shè)置游戲?qū)ο笤贖ierarchy面板中的順序,如下代碼所示:
[AppleScript] 純文本查看 復(fù)制代碼
transform.SetSiblingIndex(1);

以上代碼實現(xiàn)在游戲運行時,設(shè)置游戲?qū)ο笤贖ierarchy面板中的順序為同級節(jié)點中的第二個。


88.保存選擇狀態(tài)
當(dāng)選擇了多個游戲?qū)ο蠛?,可?Edit > Selection 的子菜單中選擇一個Save Selection項,暫存當(dāng)前選擇狀態(tài)。選擇Load Selection+對應(yīng)的序號,即可恢復(fù)某個選擇狀態(tài)。此方法對跨節(jié)點選擇多個對象的情況非常適用,這樣將不必依次展開節(jié)點重新進行查找選擇。



89.#region 和 #endregion
使用#region 和 #endregion可以將兩者之間包含的代碼折疊,方便閱讀。



90.通過腳本暫定編輯器播放
使用EditorApplication.isPaused可通過代碼在編輯器播放時將其暫停,如下代碼所示:

[AppleScript] 純文本查看 復(fù)制代碼
1
2
3
4
5
6
void Update()
{
    if (Time.time >= 10f)
    {
        EditorApplication.isPaused = true;
    }
}


需要引用命名空間UnityEditor。

91.逐幀查看程序運行
點擊暫停按鈕右側(cè)的步進(Step)按鈕,可以在程序運行時逐幀查看程序運行狀態(tài)。





92/93/94.查看游戲性能統(tǒng)計
點擊Game窗口右上角的Stats按鈕可以查看游戲性能統(tǒng)計數(shù)據(jù),如幀率、批處理等指標(biāo)。




查看更加詳細(xì)的分析數(shù)據(jù),可使用Window > Analysis > Profiler工具;使用Profiler.BeginSample和Profiler.EndSample方法可在Profiler中查看函數(shù)的資源使用情況,如下代碼所示:


[AppleScript] 純文本查看 復(fù)制代碼
1
2
Profiler.BeginSample("expensive");
CalculateSomething();
Profiler.EndSample();

需要引入UnityEngine.Profiling命名空間。



95.彈出預(yù)覽窗口
通常情況下,項目資源在Inspector面板底部均有一個預(yù)覽窗口。鼠標(biāo)右鍵點擊預(yù)覽窗口頂部,可將該窗口彈出,作為獨立窗口,放置在編輯器的任意位置。





96.測試游戲時靜音
點擊Game窗口右上角的Mute Audio按鈕,可在編輯器播放時將所有聲音關(guān)閉。




97.InvokeRepeating方法
InvokeRepeating能夠按照一定的時間間隔反復(fù)執(zhí)行某個函數(shù),若不使用CancelInvoke方法,InvokeRepeating將持續(xù)執(zhí)行,即使將方法所在的腳本關(guān)閉。


98.Frame Debugger
使用Frame Debugger(Window > Analysis > Frame Debugger)可以查看每一幀的渲染過程。


99.Physics Debugger
使用Physics Debugger(Window > Analysis > Physics Debugger)可以查看碰撞引起的異常,當(dāng)開啟Collision Geometry選項后,場景中所有游戲?qū)ο蟮呐鲎搀w都將被繪制出來,而不用依次選擇游戲?qū)ο筮M行檢查。如下圖所示,球體因為添加了不正確的Box Collider,在物理碰撞時必然不能達(dá)到預(yù)期的表現(xiàn)效果。





100.不要做MMORPG游戲!
這應(yīng)該是作者被MMORPG長期折磨的結(jié)果,此處純搞笑。

文章來源:蠻牛教育講師 邵偉老師


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多