1.Unity3D的協程和C#線程之間的區別是什么?
協程:在主線程運行的同時開啟另一段邏輯處理,來協助當前程序的執行。在每幀結束之后去檢測yield的條件是否滿足,任一指定時刻只有一個協程在運行,并且這個正在運行的協同程序只在必要時才被掛起。
多線程程序同時運行多個線程 ,除主線程之外的線程無法訪問Unity3D的對象、組件、方法,缺點:協同程序并非真線程,協程也失去了標準線程使用多CPU的能力。可能會發生堵塞。
2.動態加載資源的方式?
1.Resources.Load();
2.AssetBundle
通過Resources模塊,調用它的load函數:可以直接load并返回某個類型的Object,前提是要把這個資源放在Resource命名的文件夾下,Unity不關有沒有場景引用,都會將其全部打入到安裝包中。
2.通過bundle的形式:即將資源打成 asset bundle 放在服務器或本地磁盤,然后使用WWW模塊get 下來,然后從這個bundle中load某個object。
3.如何安全的在不同工程間地遷移asset數據?三種方法
1.將Assets目錄和Library目錄一起遷移
2.導出包,export Package
3.用unity自帶的assets Server功能
4.Unity提供了幾種光源,分別是什么
四種。
平行光:Directional Light
點光源:Point Light
聚光燈:Spot Light
區域光源:Area Light
5.Unity3d腳本從喚醒到銷毀有著一套比較完整的生命周期,請列出系統自帶的幾個重要的方法。
Awake——>OnEnable–>Start——>Update——>FixedUpdate——>LateUpdate——>OnGUI——>OnDisable——>OnDestroy