Unity引擎,上手簡單易懂,但是很少有人對Unity編輯器的功能做一個全面細致的了解,一些非常實用的小功能在日常使用中很難被發現,但它們對工作效率的提升是有不小的幫助的。
今天,我們就搜集了一些Unity3D使用過程中的遇到的技巧及問題解決方法,供大家參考。
1、如何同時打開兩個UNITY3D項目。
有時候需要對比,或者需要添加另一個項目的某資源到目前項目,同時打開兩個項目看起來會比較明了。如果直接打開的話,發現它說有重復項目已經被打開而提示錯誤不能打開。
此刻就需要設置一些unity preferences了,從edit處打開。勾上下圖紅圈圈就可以了,always show project wizard(打開項目前永遠顯示項目向導)。選完這個之后每次打開就會讓你選擇項目路徑了。如果需要同一個項目打開在兩個UNITY3D的話,那么需要下載不同版本的UNITY3D。
2、collider的碰撞檢測,即便是在collider里面也一樣觸發。
上圖是測試,原本所有面包都在藍色方塊上,有事件當面包觸發到COLLIDER的時候會自動飛出。我動態生成了一個COLLIDER來包著面包,所有面包飛出。
3、transform.rotation獲取出來的是四元素的值
假設需要獲取在transform面板上的旋轉值,需要獲取其歐拉角transform.eulerAngles。
4、判斷三維向量是否為空
方法1:TestVector3.magnitude == 0
方法2:TestVector3 == Vector3.zero
5、計算反射向量,vector3有自帶方法
Debug.Log(Vector3.Reflect(new Vector3(1.0f,0.0f,1.0f),new Vector3(0.0f,0.0f,1.0f)));
6、C# 不支持動態數組,用 ArrayList 可以實現動態數組的功能。
7、有時候發現子物體亂飛,不受坐標控制。那么很有可能是因為其父節點的相對坐標問題。
8、構造以某向量為軸的旋轉某角度的旋轉向量。UNITY自帶有四元素旋轉矩陣方法。
// Sets the transforms rotation to rotate 30 degrees around the y-axis
vecRotation = Quaternion.AngleAxis(30, Vector3.up);
//use it
vecAim = vecOrgin * vecRotation;
9、關于3DMAX的單個模型小塊全部在UNITY3D里面都被轉-90度的問題。
因為3DMAX傻逼用右手坐標系。.FBX都會這樣,導出.3DS就沒什么問題。主要是怕程序出錯,很容易出錯。
10、關于UNITY3D自帶的ASSET SERVER。
這玩意雖然簡單易用,一旦操作失當(很容易失當)。當場景資源多的時候,有時候會直接替換資源。UNITY3D是會將這兩個玩意辨認為不同的同名文件。會改掉本地或服務器相應目錄的名字。多幾次之后你就會傻眼了。所以如果可以還是用SVN或者其他專業點的版本管理器好。
11、關于DontDestroyOnload
DontDestroyOnload的物體要保證它不被加載第二次,不然再進入這個場景就會再多一個。
所以最好能動態生成,在生成之前檢驗一下它是否存在。若不存在,再添加這個物體。
12、關于粒子的淡入和淡出
如下面兩個圖,在粒子系統的面板中,有COLOR OVER LEFTTME,里面可以拉多個透明度的點。
13、項目備份要及時
Unity3D有時會犯一些你壓根不知道怎么出來的編譯BUG,重新拉個項目就會正常。
Unity 開發的相關技巧有很多,平時在學習與開發過程中,也可以自己整理相關的開發技巧,不斷的積累,你會收獲到很多寶貴的開發經驗,這是你提高自己的薪酬與待遇最有優勢的資本。