Unity隨手機

該文章持續更新!ide

  1. 協程的返回值必需是 IEnumerator
  2. 協程的參數不能加關鍵字 ref 或 out
  3. 在函數 Update 和 FixedUpdate 中不能使用 yield 語句,但能夠啓動協程
  4. yield return 語句不能位於 try-catch 語句塊中,但能夠位於 try-finally 中的 finally 語句塊中
  5. yield return 語句不能放在匿名方法中
  6. yield return 語句不能放在 unsafe 語句塊中
  7. UnityScript(即:Unity JavaScript的簡稱)中字符串的類型爲String,而不是string
  8. UnityScript的布爾爲boolean,而不是C#的bool
  9. UnityScript中的函數默認訪問權限都是public,且全部的默認函數都爲虛函數(virtual function),並且不須要加上virtual關鍵字
  10. 與C#腳本不一樣,在UnityScript中使用協程時,能夠不使用StartCoroutine方法,而是像調用普通函數那樣使用協程
  11. 在Unity中,參與 Lightmaps 烘焙的物體必須是靜態對象
  12. 在Unity中,v5.x之前版本的 Light 的 GI Mode 在 v5.x 中變動爲 Baking
  13. 射線探測物體參考代碼:
     1 void OnTriggerStay(Collider other) {
     2     if (other.gameObject == player) {
     3         Vector3 relPlayerPos = player.transform.position - transform.position;
     4         RaycastHit hit;
     5 
     6         if (Physics.Raycast(transform.position, relPlayerPos, out hit)) {
     7             if (hit.collider.gameObject == player) {
     8                 lastPlayerSighting.position = player.transform.position;
     9             }
    10         }
    11     }
    12 }
    射線探測物體參考代碼
  14. Unity 的 Animator 窗口中的一個動畫層對應一個動畫狀態機。通常來講,不一樣動畫層控制身體的不一樣部分
  15. Unity 設置遊戲幀率 Application.targetFrameRate = 30; // 即:設置遊戲幀率爲30 fps
  16. Unity 設置屏幕不休眠(即:不會黑屏) UnityEngine.Screen.sleepTimeout = UnityEngine.SleepTimeout.NeverSleep; // 即:設置屏蔽不休眠
  17. Unity 設置質量級別 UnityEngine.QualitySettings.SetQualityLevel(2);
  18. C# 判斷某個枚舉是否有定義 Enum.IsDefined(typeof(ProtoID), iProtoType));
  19. Unity 中 Image 元素是顯示精靈,而 RawImage 是顯示普通 Texture2D 貼圖。由於每一張 RawImage 都會增長一個額外 Drawcall,因此最好只用於一直使用的大尺寸圖片(如:與屏幕同等大小的圖片)或臨時顯示的圖片
  20. Unity 點光源(Point Light)基於空間中的一點,均勻地向四面八方發送光,光照強度隨着距離衰減,最小強度爲0
    Unity 聚光源(Spot Light)和點光源同樣,也是基於空間中某一點。但不一樣的是聚光源只在一個角度範圍內發出光,因此是一個圓錐形
    Unity 方向光(Directional Light)沒有具體的光源位置,因此會對整個場景進行照射。所以,它能夠放在任意位置,其效果都同樣。也沒有照射距離的概念,由於光的強度不會衰減。
    Unity 區域光(Area Light)在空間中以一個矩形展示。光從矩形的一側照向另外一側,會衰減。注意:區域光很是佔用 CPU,因此是惟一必需提早烘焙的光源類型。由於區域光從不一樣的角度照射物體,因此明暗變化更柔和,能夠用來模擬街燈
  21. C# 對 Dictionary<> 或 List<> 進行遍歷並在遍歷過程當中,將符合條件元素移除掉參考代碼:
     1     public List<string> assetBundleName;
     2     private Dictionary<string, WWW> wwwDownloading = new Dictionary<string, WWW>();
     3     private int maxCount                           = 4;
     4 
     5     // Update is called once per frame
     6     void Update () {
     7 
     8         // 遍歷並將符合條件的直接移除
     9         foreach (var item in wwwDownloading)
    10         {
    11             if (item.Value.isDone)
    12             {
    13                 item.Value.assetBundle.Unload(true);
    14                 item.Value.Dispose();
    15                 wwwDownloading.Remove(item.Key);
    16             }
    17         }
    18 
    19         // 遍歷並將符合條件的直接移除
    20         foreach (string s in assetBundleName)
    21         {
    22             if (wwwDownloading.Count < maxCount)
    23             {
    24                 Load(s);
    25                 assetBundleName.Remove(s);
    26             }
    27         }
    28     }
    29 
    30     void Load(string abName)
    31     {
    32         WWW www = WWW.LoadFromCacheOrDownload(abName, 0);
    33         wwwDownloading.Add(abName, www);
    34     }
    遍歷 Dictionary<> 或 List<> 並將符合條件元素移除參考代碼
  22. 在Unity中,常規作法是把矢量放在矩陣的右側,即把矢量轉換成列矩陣來進行運算
  23. 分解基礎變換矩陣備忘

    上面(4 x 4)矩陣用來表示平移、旋轉、和縮放。注意:把表示純平移、純旋轉、純縮放的變換矩陣叫作基礎變換矩陣。其中,上面矩陣中的左上角部分  用於表示旋轉和縮放,右上角部分的  用於表示平移,左下角部分的  = ,最後一個右下角部分的 1 就是標題 1。
    注意:01) 在絕大多數狀況下,咱們約定變換的順序是先縮放、再旋轉、最後平移!
              02) 在旋轉矩陣過程當中,若是給出了分別繞x軸、y軸、z裏面旋轉的變換矩陣,則在Unity中,旋轉的前後順序爲 zxy,即先繞z軸旋轉、再繞x軸旋轉、最後繞y軸旋轉! 這在相關的 API 文檔中都有說明。
  24. [Unity Shader]一般,若是須要把一些自定義的數據從頂點着色器傳遞給片元着色器,通常選用TEXCOORD0等
  25. [Unity Shader]注意:一個語義可使用的寄存器只能處理4個浮點值(float)。所以,若是想要定義矩陣類型,如:float3x四、float4x4等變量就須要使用更多的空間。一種方法是,把這些變量拆分紅多個變量,例如對於float4x4的矩陣類型,能夠拆分紅4個float4類型的變量,每一個變量存儲了矩陣中的一行數據
  26. s
相關文章
相關標籤/搜索