Unity 3D

出自 ProgWiki
於 2019年3月20日 (三) 16:10 由 Player (對話 | 貢獻) 所做的修訂 (事件)

(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)
前往: 導覽搜尋

Unity 3D,參照:『維基百科~Unity_(game_engine)

技術文件

MVA教學影片
教學
其它

Script語言

  • UnityScript(衍生自ECMAScript)
  • C#
  • BOO(衍生自Python)

相關套件

撥放器
IDE相關套件
Server端套件
地板工具
視角或角色控制
2D Sprite工具
Resource
社群互動相關
Midi播放
語音
Script語言相關
錄影
破碎效果
其他

應用範例

模擬

FAQ

擴充套件

  1. Asset Store(第三方套件,販賣或免費)
  2. 擴充套件的副檔名是 .unitypackage ,下載後放在資料夾 (Administrator為WIndows登入帳號)
    • 在WinXP查到放在
       C:\Documents and Settings\Administrator\Application Data\Unity\Asset Store\
    • 在Win2012放在
       C:\Users\Administrator\AppData\Roaming\Unity\Asset Store\
開發Unity擴充套件
AVG開發相關套件

關於Script

  1. Script的教學
  2. 物件關係:
    應用程式(Application)→ 場景(Scene) →遊戲物件(GameObject) →組件(Component)
  3. 主要Sciprt的類別必需繼承MonoBehaviour,並自訂Awake、Start、Update、FixedUpdate……等函數
  4. 切換場景:static AsyncOperation LoadLevelAsync(string levelName);
  5. 尋找遊戲物件:static GameObject[] FindGameObjectsWithTag(string tag);
  6. 在遊戲物件內取得組件:Type obj = GetComponent<Type>(); ,摧毀Destroy(Object obj);
  7. 建立預製(Prefab)物件的複本:static Object Instantiate(Object original, Vector3 position, Quaternion rotation);
  8. 其它

關於場景(Scene)

  1. 場景為 .unity 檔
  2. 每個場景都必需放一個Main Camera的GameObject,不然會看不到。

關於骨架動畫

  1. 建議使用 .fbx 檔,這種據說載入會比較快。
  2. 每一個動作分別一個 .fbx
動作 檔名
靜止 角色名.fbx
 ? 角色名@Fall.fbx
閒置 角色名@Idea.fbx
角色名@Jump.fbx
 ? 角色名@Land.fbx
角色名@Run.fbx
 ? 角色名@Shuffle.fbx
走路 角色名@Walk.fbx

關於GUI

Unity 4.5.x版以前

其他

Unity 4.6版以後

  • 將會有一套叫做UGUI的新架構

第三方套件

關於顯示效能

  1. 要降3d物件的面數:
    • 在PC或Web上, 每個3D模型要低於6000 (建議5000) 。
    • 在PS3或XBOX360上, 每個3D模型要低於7000 (建議5000) 。
    • 在行動裝置上, 每個3D模型要低於1500 (建議300)。
  2. 在場景中, 每個3D物件都必須會用到2個Draw Call, 所以簡少場景中的3D物件數量, 就能夠降低Draw Call的次數 (也就是你要預先把3D物件合併起來到 預製(Prefab)物件。
  3. Textures(紋理材質)的檔案大小要適當,太大的圖檔只會拖慢載入的速度。

專案內的資料夾

  • Assets(資產)
    • Animations(動畫,放 .anim.fbx檔)
      • Materials(材質,放.mat檔)
    • Animators(動畫製作者,放控制動畫的 .controller 檔)
    • Audio(音效或BGM,放 .wav.ogg 檔)
      • BGM(背景音樂)
      • SE(音效)
    • Fonts(字型,放 .ttf 檔)
    • Models(3D模型,放 .fbx檔)
      • Materials(材質,放.mat檔)
    • Prefabs(預製物件,放 .prefab檔)
    • Scenes(場景,放 .unity檔)
      • Lightmaps(光照貼圖,放.exr檔)
      • Materials(材質,放.mat檔)
    • Scripts(腳本,放 .cs檔)
    • Shaders(著色器,放.shader檔)
    • Textures(紋理材質,放.cubemap.png.tif檔)
    • Resources(動態使用的檔案,透過Resources.Load載入)
  • Editor(編輯器用相關工具)
  • Library
  • ProjectSettings(專案設定,放.asset檔)

Assets載入與管理

關於Shader

輸出種類

另見:App開發
內建支援
  • Web Player
輸出成資料夾,包含一個html檔與一個執行時所必需的unity3d檔。用戶端必須另外先安裝Unity Web Player
  • PC(Windows)
輸出成資料夾,包含可執行的exe檔與一個執行時所必需相關檔案的資料夾。
  • MAC
輸出成資料夾。
  • Linux
輸出成資料夾,包含一個x86檔與一個執行時所必需相關檔案的資料夾。
  • iOS
輸出成資料夾,一個XCode專案,必須在iMac等環境下用xcode輸出。如果要發布在標準的管道上,必須要加入Apple開發俱樂部(需收年費)
  • Android
需要先自備Android SDK,會輸出成一個apk檔。如果要發布在標準的管道上,必須要加入Google Play Developer Console(需收年費)
  • BlackBerry
輸出成一個bar檔。
  • Windows Store Apps
  • Windows Phone 8
  • Google Native Client
需另外購買
  • XBOX 360
  • PS3
  • PS4
  • wii

跨平台時的相容性

執行環境判斷

使用Visual Studio去Debug

  • 安裝 Visual Studio Tools for Unity
  1. 下載並安裝Visual Studio Tools for Unity (例如 for Visual Studio 2013的)
  2. 在Unity裡匯入套件 Assets → Import Package → Visual Studio 2013 Tools
  3. 關閉Unity重新啟動Unity,使得Visual Studio Tools for Unity能夠動作
  • 要Debug時的操作順序
  1. 用Unity開專案
  2. 在Unity裡開Visual Studio 2013
  3. Debug時, 在Visual Studio 2013裡Attach to Unity
  4. 再到Unity裡跑
  5. 這樣就會停在Visual Studio 2013的斷點了

Unity腳本的呼叫流程

在WebPlayer執行時

使用外部Script
從HTML的Script去使用Unity內的Script
 u.getUnity().SendMessage("ObjectName", "FuncName", "傳入參數?");

StartCoroutine與IEnumerator

關於Plugins

關於WebView

防止行動裝置進入省電模式

Screen.sleepTimeout = SleepTimeout.NeverSleep;

WWW因為跨網域而無法存取遠端網站的內容

<?xml version="1.0" encoding="us-ascii" ?>
<cross-domain-policy>
  <allow-access-from domain="*"/>
</cross-domain-policy>

Application.Quit()沒有結束App

資源打包以及更新機制

翻書效果

事件

用途 事件函數
碰撞進入(2D) MonoBehaviour.OnCollisionEnter2D(Collision2D)
碰撞離開(2D) MonoBehaviour.OnCollisionExit2D(Collision2D)
觸發進入(2D) MonoBehaviour.OnTriggerEnter2D(Collider2D)
觸發離開(2D) MonoBehaviour.OnTriggerExit2D(Collider2D)