- Hierarchy窗口中是場景中的Game Object列表
- Project窗口中是磁盤上Assets文件夾中的內容,可用來創建Game Object
- 調試用Debug.Log()或者print函數打日誌
- 目前完全無法採用VisualStudio進行調試,只能用MonoDevelop。因Unity採用的是Mono運行時引擎而不是CLR,參考Debugging using Visual Studio 2010
- MonoDevelop對Unity的attach調試不能跨dll
- Unity自帶Mono版本可能是2.6
- 目前應謹慎考慮採用Mono寫需長時間運行的服務器程序
- MonoDevelop寫的源碼文件會以UTF8 Unix結尾方式保存
- Unity自帶的MonoDevelop和官方MonoDevelop的有區別的,不要升級MonoDevelop
- Application.LoadLevel()可以切換場景
- 文件打包用的是AssetBundle
- 所有通過Resources類加載的資源必須放在名爲Resources的目錄中
- All assets that are in a folder named "Resources" anywhere in the Assets folder can be accessed via theResources.Load functions. Multiple "Resources" folders may exist and when loading objects each will be examined.
- 不同Resources目錄同名目錄加載規則無法預測!
- Reading Excel Files and Sheets into Unity,用的是直接COM讀取excel的方式,沒有參與資源管線
- Reading Text Data Into A Unity Game
- 所有需要通過散包方式加載的文件必須通過WWW的方式,加載後可自動識別movie、text、texture和bytes四種格式
- Unity3d 動態讀取外部文件,包括對已封裝好的內部資源的加載和外部散包資源的加載
- 在Unity3D的WebGame中實現資源動態加載
- Used GUILayout.FlexibleSpace to center your automatic GUILayout
- Unity支持PInvoke(Platform Invocation Services)方式的插件,Unity加載Plugin時遇到的一些問題
- Plugins (Pro/Mobile-Only Feature)
- 定製Build流程: Build Player Pipeline
- Unity發佈的exe是非託管的,但邏輯dll是放在GAME_Data\Managed下的,代碼完全可以反編譯
- 沒發現Unity編譯後的資源目錄Game_Data中的文件結構和編輯器中的Project目錄有明顯的直接對應關係
- 編譯後資源都被放到sharedassets*.assets這樣的加密文件中,其中*可能是場景編號; Scene文件可能被放到了level*中
- Resources和其他目錄不一樣,其他目錄編譯完後會被自動打包合併,而Resources會有一個直接對應的resources.asset文件
- 相同的源反覆編譯生成的二進制不變
- 添加空場景後Game_Data/mainData發生改變
- prefab和各種資源關聯啥的會自動處理的,只把用到的打包
- 編輯器中Import Package但沒有真正使用不會對編譯結果造成影響
- Game.exe始終是穩定不變的
- 即使採用了Force Text選項,ProjectSettings下很多asset文件也還是二進制格式的
Unity doesn't support vector fonts. For every font size that you want to support, you need to import a new version of the font and change its import settings to a different size.@Unity 3.x Game Development by Exple Beginner's Guide[P201]
- Unity3D實用工具彙總
- Convert unity javascript (unityscript) to C#
- Unity3D屏幕截圖
- Unity目前能在手機上做到的效果,其中shader開放可免費使用
- 採用雙色半圓拼接餅狀圖是個技巧
- Unity問題集(不斷更新中)
- Inherit from MonoBehaviour
- Use the Awake or Start function to do initialisation
- The class name must match the file name
- Coroutines have a different syntax in C#
- Coroutines have to have a return type of IEnumerator and you yield using "yield return" instead of just "yield"
- Don't use namespaces
- Only member variables are serialized and are shown in the Inspector
- Avoid using the constructor or variable initializers
- Never initialize any values in the constructor or variable initializers in a MonoBehaviour script. Instead use Awake or Start for this purpose.
- Editor腳本是可以用C#寫的,編譯完後重啓Unity生效
- 不要在Editor腳本中採用中文菜單,有一定可能down機
- 如果亂碼,需要將文件保存爲UTF8格式
- Unity3d版本控制,哪些文件該放到svn的問題解決
- Unity目前的版本已經把需要svn控制的文件單獨歸類放到Project Settings裏了,現在只需要將Assets和ProjectSettings兩目錄加入svn即可 @Using External Version Control Systems with Unity
- 必須進行以下設置纔可將項目加入到svn管理:
- meta文件爲Unity內部使用,不要手工更改,也必須加入svn
- Unity內部是用GUID做文件間引用的
- Force Text可以將場景文件序列化爲文本,以利於版本控制,默認爲二進制
- Unity資源序列化採用的是YAML
- Unity3D強大的UI插件(NGUI)
- NGUI: Documentation
- 中文教程: Unity界面插件NGUI基礎教程
- 中文教程: Unity界面插件NGUI核心組件說明
- 相同Depth的控件會存在z排序不穩定問題!複雜界面要進行合理的規劃
- protobuf-net要採用net20版本的,不要用mono版的,據說有坑
- protobuf-csharp-port? and How to choose between protobuf-csharp-port and protobuf-net
- Hightmap Resolution會比Terrain Resolution大1
- 移動平臺小地形最好用模型,或者將Unity自帶的Terrain用插件導出爲模型,省性能。Unity Terrain依賴shader 2.0,某些手機不支持,即使導出地圖也依賴shader 2.0,自己做地形模型一張貼圖即可搞定
- Skybox的設置在Edit/RenderSettings/Skybox Material下,確保Game Overlay按鈕選中纔可以顯示出來
- 要第三人稱在場景中漫遊,需要將First Person Controller加入到場景
- Inspector窗口中的Static Checkbox: Checking this box tells Unity that a particular object in your scene will not be moving during the game, and as such can be lightmapped.
?
- 動態下載和加載資源:
- Web MMO需要儘量減少首次下載量,並能在遊戲運行中動態加載資源
- 遊戲運行時資源下載和加載,Unity Pro支持兩種方法: 資源包和資源目錄。非Pro版本智能使用資源目錄方法。一個資源包是一個外部的資源集合,遊戲中可以使用多個資源包,資源包是在發行版本以外存在的。資源目錄是一些資源的集合,資源目錄被包含在發行版本里面,但是並沒有和任何遊戲對象有關聯。資源目錄通過Edit->Project Settings->Player的First Streamed Level With Resource來設定
- 對Web MMO產品的建議
- 主要是資源大小的考慮,資源中,貼圖是大頭,需要儘量減少貼圖使用量。卡通類遊戲比較適合
- 由於動態下載和加載資源會一直存在,玩家角色在場景中的移動速度不宜過大,大場景不宜頻繁切換。資源動態下載需要佔用玩家一定網絡帶寬
- 使用Unity的準備工作:
- Unity畢竟是一款包含內容和功能很多的遊戲引擎。需要花一些時間熟悉其編輯器、代碼和開發環境、資源生產流程等主要功能。不建議項目開始前沒有一定的準備期
- unity的主要使用者是關卡策劃和程序員
- 目前Unity對中文的支持不是很好,因此在Unity中儘量不要使用中文,防止出現各種各樣莫名其妙的異常
- 如何調整太陽光方向和天空盒太陽貼圖方向一致?
- 一個好的遊戲沒有好的配樂和音效,就好像無暇的水晶缺少了燈光的陪襯。而音樂不僅能渲染出玩家攻略遊戲時的氛圍,還能增加提高玩家對遊戲的認知度 @音樂和音效
- 所有Prefab實例的屬性都引用自Prefab的預設,當預設屬性改變時,對應的實例屬性也會相應改變。但當實例的某個屬性被手工調整後,即使修改預設的屬性值,該值也會以手工調整的值爲準
- 隨着360和Unity的合作,前者的360安全瀏覽器預裝Unity3d的方案實施會給Unity進軍中國市場帶來可觀的便捷
- Choosing GUI framework for your Unity3D project: EZGUI vs NGUI, Part I and Part II
- NGUI製作小地圖
- Particle Emitter: 只管發射粒子
- Particle Animator: 粒子動畫器,負責對發射器產生的粒子進行二次加工,比如使粒子的顏色不斷的變化,縮放粒子等
- Particle Renderer: 粒子渲染器,負責將粒子渲染到遊戲中,並且可以決定粒子的材質、光影等
- Select:在工程面板中快速選取該實例引用的預製
- Revert:將實例修改過的參數全部還原爲預製的參數
- Apply:將實例修改過的參數全部應用到預製,此時所有引用此預製的實例會一起受到影響而變動
- Unity3D使用C#實現Coroutines & Yield
- 所有使用yield的函數必須返回IEnumerator類型(這點和C# IEnumerable標準用法有差異!)
- 所有IEnumerator類型函數必須使用”StartCoroutine”這個函數觸發,不能單獨使用
- How do I use Yield in C#?
- Overview: Coroutines & Yield
- MonoBehaviour.StartCoroutine
- 和Inspector窗口關聯的public field重命名後Inspector中編輯的值會丟失!
- Be aware that any value adjusted in the Inspector will override the original value given to a variable within the script. It will not rewrite the value stated in the script, but simply replaces it when the game runs.? You can also revert to the values declared in the script by clicking on the Cog icon to the right of the component and choosing Reset from the drop-down menu that appears.
- public property不會進入Instactor
- enum在Inspector中會自動展示爲ComboBox
- 可通過SendMessage方法進行動態方法調用!
- 可採用Find/FindWithTag方法, 用字符串名稱的方式直接查找GameObject對象
- Service References的代碼可用VisualStudio自帶的“添加服務引用”功能,沒必要非命令行用mono的svcutil。成功生成後需要將對應的C#代碼文件拷貝到Assert下合適的目錄中,否則不會參加編譯
- 需要從C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0拷貝到*\Assets\Plugins下的dll有:
- System.Runtime.Serialization.dll
- System.Security.dll
- System.ServiceModel.dll
- System.IdentityModel.Selectors.dll // 該文件也是必要的,否則System.ServiceModel.dll不會被正確引入
- Consuming a WCF Service from Unity3D
- Is it possible to use WCF in scripts?
- Webservices In Unity
- Unity中使用WCF服務小教程
- Unity界面插件NGUI基礎教程
- Unity界面插件NGUI核心組件說明
- NGUI: Documentation
- 譯文: Unity3d 界面插件NGUI
- 調整NGUI“米老鼠”大小:
- Request free license
- Works With Any Game Engine,包括cocos2d、CEGUI、Unity等,還可方便自定義輸出格式
- Hierarchy窗口中是場景中的Game Object列表
- Project窗口中是磁盤上Assets文件夾中的內容,可用來創建Game Object
- 調試用Debug.Log()或者print函數打日誌
- 目前完全無法採用VisualStudio進行調試,只能用MonoDevelop。因Unity採用的是Mono運行時引擎而不是CLR,參考Debugging using Visual Studio 2010
- MonoDevelop對Unity的attach調試不能跨dll
- Unity自帶Mono版本可能是2.6
- 目前應謹慎考慮採用Mono寫需長時間運行的服務器程序
- MonoDevelop寫的源碼文件會以UTF8 Unix結尾方式保存
- Unity自帶的MonoDevelop和官方MonoDevelop的有區別的,不要升級MonoDevelop
- Application.LoadLevel()可以切換場景
- 文件打包用的是AssetBundle
- 所有通過Resources類加載的資源必須放在名爲Resources的目錄中
- All assets that are in a folder named "Resources" anywhere in the Assets folder can be accessed via theResources.Load functions. Multiple "Resources" folders may exist and when loading objects each will be examined.
- 不同Resources目錄同名目錄加載規則無法預測!
- Reading Excel Files and Sheets into Unity,用的是直接COM讀取excel的方式,沒有參與資源管線
- Reading Text Data Into A Unity Game
- 所有需要通過散包方式加載的文件必須通過WWW的方式,加載後可自動識別movie、text、texture和bytes四種格式
- Unity3d 動態讀取外部文件,包括對已封裝好的內部資源的加載和外部散包資源的加載
- 在Unity3D的WebGame中實現資源動態加載
- Used GUILayout.FlexibleSpace to center your automatic GUILayout
- Unity支持PInvoke(Platform Invocation Services)方式的插件,Unity加載Plugin時遇到的一些問題
- Plugins (Pro/Mobile-Only Feature)
- 定製Build流程: Build Player Pipeline
- Unity發佈的exe是非託管的,但邏輯dll是放在GAME_Data\Managed下的,代碼完全可以反編譯
- 沒發現Unity編譯後的資源目錄Game_Data中的文件結構和編輯器中的Project目錄有明顯的直接對應關係
- 編譯後資源都被放到sharedassets*.assets這樣的加密文件中,其中*可能是場景編號; Scene文件可能被放到了level*中
- Resources和其他目錄不一樣,其他目錄編譯完後會被自動打包合併,而Resources會有一個直接對應的resources.asset文件
- 相同的源反覆編譯生成的二進制不變
- 添加空場景後Game_Data/mainData發生改變
- prefab和各種資源關聯啥的會自動處理的,只把用到的打包
- 編輯器中Import Package但沒有真正使用不會對編譯結果造成影響
- Game.exe始終是穩定不變的
- 即使採用了Force Text選項,ProjectSettings下很多asset文件也還是二進制格式的
Unity doesn't support vector fonts. For every font size that you want to support, you need to import a new version of the font and change its import settings to a different size.@Unity 3.x Game Development by Exple Beginner's Guide[P201]
- Unity3D實用工具彙總
- Convert unity javascript (unityscript) to C#
- Unity3D屏幕截圖
- Unity目前能在手機上做到的效果,其中shader開放可免費使用
- 採用雙色半圓拼接餅狀圖是個技巧
- Unity問題集(不斷更新中)
- Inherit from MonoBehaviour
- Use the Awake or Start function to do initialisation
- The class name must match the file name
- Coroutines have a different syntax in C#
- Coroutines have to have a return type of IEnumerator and you yield using "yield return" instead of just "yield"
- Don't use namespaces
- Only member variables are serialized and are shown in the Inspector
- Avoid using the constructor or variable initializers
- Never initialize any values in the constructor or variable initializers in a MonoBehaviour script. Instead use Awake or Start for this purpose.
- Editor腳本是可以用C#寫的,編譯完後重啓Unity生效
- 不要在Editor腳本中採用中文菜單,有一定可能down機
- 如果亂碼,需要將文件保存爲UTF8格式
- Unity3d版本控制,哪些文件該放到svn的問題解決
- Unity目前的版本已經把需要svn控制的文件單獨歸類放到Project Settings裏了,現在只需要將Assets和ProjectSettings兩目錄加入svn即可 @Using External Version Control Systems with Unity
- 必須進行以下設置纔可將項目加入到svn管理:
- meta文件爲Unity內部使用,不要手工更改,也必須加入svn
- Unity內部是用GUID做文件間引用的
- Force Text可以將場景文件序列化爲文本,以利於版本控制,默認爲二進制
- Unity資源序列化採用的是YAML
- Unity3D強大的UI插件(NGUI)
- NGUI: Documentation
- 中文教程: Unity界面插件NGUI基礎教程
- 中文教程: Unity界面插件NGUI核心組件說明
- 相同Depth的控件會存在z排序不穩定問題!複雜界面要進行合理的規劃
- protobuf-net要採用net20版本的,不要用mono版的,據說有坑
- protobuf-csharp-port? and How to choose between protobuf-csharp-port and protobuf-net
- Hightmap Resolution會比Terrain Resolution大1
- 移動平臺小地形最好用模型,或者將Unity自帶的Terrain用插件導出爲模型,省性能。Unity Terrain依賴shader 2.0,某些手機不支持,即使導出地圖也依賴shader 2.0,自己做地形模型一張貼圖即可搞定
- Skybox的設置在Edit/RenderSettings/Skybox Material下,確保Game Overlay按鈕選中纔可以顯示出來
- 要第三人稱在場景中漫遊,需要將First Person Controller加入到場景
- Inspector窗口中的Static Checkbox: Checking this box tells Unity that a particular object in your scene will not be moving during the game, and as such can be lightmapped.
?
- 動態下載和加載資源:
- Web MMO需要儘量減少首次下載量,並能在遊戲運行中動態加載資源
- 遊戲運行時資源下載和加載,Unity Pro支持兩種方法: 資源包和資源目錄。非Pro版本智能使用資源目錄方法。一個資源包是一個外部的資源集合,遊戲中可以使用多個資源包,資源包是在發行版本以外存在的。資源目錄是一些資源的集合,資源目錄被包含在發行版本里面,但是並沒有和任何遊戲對象有關聯。資源目錄通過Edit->Project Settings->Player的First Streamed Level With Resource來設定
- 對Web MMO產品的建議
- 主要是資源大小的考慮,資源中,貼圖是大頭,需要儘量減少貼圖使用量。卡通類遊戲比較適合
- 由於動態下載和加載資源會一直存在,玩家角色在場景中的移動速度不宜過大,大場景不宜頻繁切換。資源動態下載需要佔用玩家一定網絡帶寬
- 使用Unity的準備工作:
- Unity畢竟是一款包含內容和功能很多的遊戲引擎。需要花一些時間熟悉其編輯器、代碼和開發環境、資源生產流程等主要功能。不建議項目開始前沒有一定的準備期
- unity的主要使用者是關卡策劃和程序員
- 目前Unity對中文的支持不是很好,因此在Unity中儘量不要使用中文,防止出現各種各樣莫名其妙的異常
- 如何調整太陽光方向和天空盒太陽貼圖方向一致?
- 一個好的遊戲沒有好的配樂和音效,就好像無暇的水晶缺少了燈光的陪襯。而音樂不僅能渲染出玩家攻略遊戲時的氛圍,還能增加提高玩家對遊戲的認知度 @音樂和音效
- 所有Prefab實例的屬性都引用自Prefab的預設,當預設屬性改變時,對應的實例屬性也會相應改變。但當實例的某個屬性被手工調整後,即使修改預設的屬性值,該值也會以手工調整的值爲準
- 隨着360和Unity的合作,前者的360安全瀏覽器預裝Unity3d的方案實施會給Unity進軍中國市場帶來可觀的便捷
- Choosing GUI framework for your Unity3D project: EZGUI vs NGUI, Part I and Part II
- NGUI製作小地圖
- Particle Emitter: 只管發射粒子
- Particle Animator: 粒子動畫器,負責對發射器產生的粒子進行二次加工,比如使粒子的顏色不斷的變化,縮放粒子等
- Particle Renderer: 粒子渲染器,負責將粒子渲染到遊戲中,並且可以決定粒子的材質、光影等
- Select:在工程面板中快速選取該實例引用的預製
- Revert:將實例修改過的參數全部還原爲預製的參數
- Apply:將實例修改過的參數全部應用到預製,此時所有引用此預製的實例會一起受到影響而變動
- Unity3D使用C#實現Coroutines & Yield
- 所有使用yield的函數必須返回IEnumerator類型(這點和C# IEnumerable標準用法有差異!)
- 所有IEnumerator類型函數必須使用”StartCoroutine”這個函數觸發,不能單獨使用
- How do I use Yield in C#?
- Overview: Coroutines & Yield
- MonoBehaviour.StartCoroutine
- 和Inspector窗口關聯的public field重命名後Inspector中編輯的值會丟失!
- Be aware that any value adjusted in the Inspector will override the original value given to a variable within the script. It will not rewrite the value stated in the script, but simply replaces it when the game runs.? You can also revert to the values declared in the script by clicking on the Cog icon to the right of the component and choosing Reset from the drop-down menu that appears.
- public property不會進入Instactor
- enum在Inspector中會自動展示爲ComboBox
- 可通過SendMessage方法進行動態方法調用!
- 可採用Find/FindWithTag方法, 用字符串名稱的方式直接查找GameObject對象
- Service References的代碼可用VisualStudio自帶的“添加服務引用”功能,沒必要非命令行用mono的svcutil。成功生成後需要將對應的C#代碼文件拷貝到Assert下合適的目錄中,否則不會參加編譯
- 需要從C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0拷貝到*\Assets\Plugins下的dll有:
- System.Runtime.Serialization.dll
- System.Security.dll
- System.ServiceModel.dll
- System.IdentityModel.Selectors.dll // 該文件也是必要的,否則System.ServiceModel.dll不會被正確引入
- Consuming a WCF Service from Unity3D
- Is it possible to use WCF in scripts?
- Webservices In Unity
- Unity中使用WCF服務小教程
- Unity界面插件NGUI基礎教程
- Unity界面插件NGUI核心組件說明
- NGUI: Documentation
- 譯文: Unity3d 界面插件NGUI
- 調整NGUI“米老鼠”大小:
- Request free license
- Works With Any Game Engine,包括cocos2d、CEGUI、Unity等,還可方便自定義輸出格式
- Hierarchy窗口中是場景中的Game Object列表
- Project窗口中是磁盤上Assets文件夾中的內容,可用來創建Game Object
- 調試用Debug.Log()或者print函數打日誌
- 目前完全無法採用VisualStudio進行調試,只能用MonoDevelop。因Unity採用的是Mono運行時引擎而不是CLR,參考Debugging using Visual Studio 2010
- MonoDevelop對Unity的attach調試不能跨dll
- Unity自帶Mono版本可能是2.6
- 目前應謹慎考慮採用Mono寫需長時間運行的服務器程序
- MonoDevelop寫的源碼文件會以UTF8 Unix結尾方式保存
- Unity自帶的MonoDevelop和官方MonoDevelop的有區別的,不要升級MonoDevelop
- Application.LoadLevel()可以切換場景
- 文件打包用的是AssetBundle
- 所有通過Resources類加載的資源必須放在名爲Resources的目錄中
- All assets that are in a folder named "Resources" anywhere in the Assets folder can be accessed via theResources.Load functions. Multiple "Resources" folders may exist and when loading objects each will be examined.
- 不同Resources目錄同名目錄加載規則無法預測!
- Reading Excel Files and Sheets into Unity,用的是直接COM讀取excel的方式,沒有參與資源管線
- Reading Text Data Into A Unity Game
- 所有需要通過散包方式加載的文件必須通過WWW的方式,加載後可自動識別movie、text、texture和bytes四種格式
- Unity3d 動態讀取外部文件,包括對已封裝好的內部資源的加載和外部散包資源的加載
- 在Unity3D的WebGame中實現資源動態加載
- Used GUILayout.FlexibleSpace to center your automatic GUILayout
- Unity支持PInvoke(Platform Invocation Services)方式的插件,Unity加載Plugin時遇到的一些問題
- Plugins (Pro/Mobile-Only Feature)
- 定製Build流程: Build Player Pipeline
- Unity發佈的exe是非託管的,但邏輯dll是放在GAME_Data\Managed下的,代碼完全可以反編譯
- 沒發現Unity編譯後的資源目錄Game_Data中的文件結構和編輯器中的Project目錄有明顯的直接對應關係
- 編譯後資源都被放到sharedassets*.assets這樣的加密文件中,其中*可能是場景編號; Scene文件可能被放到了level*中
- Resources和其他目錄不一樣,其他目錄編譯完後會被自動打包合併,而Resources會有一個直接對應的resources.asset文件
- 相同的源反覆編譯生成的二進制不變
- 添加空場景後Game_Data/mainData發生改變
- prefab和各種資源關聯啥的會自動處理的,只把用到的打包
- 編輯器中Import Package但沒有真正使用不會對編譯結果造成影響
- Game.exe始終是穩定不變的
- 即使採用了Force Text選項,ProjectSettings下很多asset文件也還是二進制格式的
Unity doesn't support vector fonts. For every font size that you want to support, you need to import a new version of the font and change its import settings to a different size.@Unity 3.x Game Development by Exple Beginner's Guide[P201]
- Unity3D實用工具彙總
- Convert unity javascript (unityscript) to C#
- Unity3D屏幕截圖
- Unity目前能在手機上做到的效果,其中shader開放可免費使用
- 採用雙色半圓拼接餅狀圖是個技巧
- Unity問題集(不斷更新中)
- Inherit from MonoBehaviour
- Use the Awake or Start function to do initialisation
- The class name must match the file name
- Coroutines have a different syntax in C#
- Coroutines have to have a return type of IEnumerator and you yield using "yield return" instead of just "yield"
- Don't use namespaces
- Only member variables are serialized and are shown in the Inspector
- Avoid using the constructor or variable initializers
- Never initialize any values in the constructor or variable initializers in a MonoBehaviour script. Instead use Awake or Start for this purpose.
- Editor腳本是可以用C#寫的,編譯完後重啓Unity生效
- 不要在Editor腳本中採用中文菜單,有一定可能down機
- 如果亂碼,需要將文件保存爲UTF8格式
- Unity3d版本控制,哪些文件該放到svn的問題解決
- Unity目前的版本已經把需要svn控制的文件單獨歸類放到Project Settings裏了,現在只需要將Assets和ProjectSettings兩目錄加入svn即可 @Using External Version Control Systems with Unity
- 必須進行以下設置纔可將項目加入到svn管理:
- meta文件爲Unity內部使用,不要手工更改,也必須加入svn
- Unity內部是用GUID做文件間引用的
- Force Text可以將場景文件序列化爲文本,以利於版本控制,默認爲二進制
- Unity資源序列化採用的是YAML
- Unity3D強大的UI插件(NGUI)
- NGUI: Documentation
- 中文教程: Unity界面插件NGUI基礎教程
- 中文教程: Unity界面插件NGUI核心組件說明
- 相同Depth的控件會存在z排序不穩定問題!複雜界面要進行合理的規劃
- protobuf-net要採用net20版本的,不要用mono版的,據說有坑
- protobuf-csharp-port? and How to choose between protobuf-csharp-port and protobuf-net
- Hightmap Resolution會比Terrain Resolution大1
- 移動平臺小地形最好用模型,或者將Unity自帶的Terrain用插件導出爲模型,省性能。Unity Terrain依賴shader 2.0,某些手機不支持,即使導出地圖也依賴shader 2.0,自己做地形模型一張貼圖即可搞定
- Skybox的設置在Edit/RenderSettings/Skybox Material下,確保Game Overlay按鈕選中纔可以顯示出來
- 要第三人稱在場景中漫遊,需要將First Person Controller加入到場景
- Inspector窗口中的Static Checkbox: Checking this box tells Unity that a particular object in your scene will not be moving during the game, and as such can be lightmapped.
?
- 動態下載和加載資源:
- Web MMO需要儘量減少首次下載量,並能在遊戲運行中動態加載資源
- 遊戲運行時資源下載和加載,Unity Pro支持兩種方法: 資源包和資源目錄。非Pro版本智能使用資源目錄方法。一個資源包是一個外部的資源集合,遊戲中可以使用多個資源包,資源包是在發行版本以外存在的。資源目錄是一些資源的集合,資源目錄被包含在發行版本里面,但是並沒有和任何遊戲對象有關聯。資源目錄通過Edit->Project Settings->Player的First Streamed Level With Resource來設定
- 對Web MMO產品的建議
- 主要是資源大小的考慮,資源中,貼圖是大頭,需要儘量減少貼圖使用量。卡通類遊戲比較適合
- 由於動態下載和加載資源會一直存在,玩家角色在場景中的移動速度不宜過大,大場景不宜頻繁切換。資源動態下載需要佔用玩家一定網絡帶寬
- 使用Unity的準備工作:
- Unity畢竟是一款包含內容和功能很多的遊戲引擎。需要花一些時間熟悉其編輯器、代碼和開發環境、資源生產流程等主要功能。不建議項目開始前沒有一定的準備期
- unity的主要使用者是關卡策劃和程序員
- 目前Unity對中文的支持不是很好,因此在Unity中儘量不要使用中文,防止出現各種各樣莫名其妙的異常
- 如何調整太陽光方向和天空盒太陽貼圖方向一致?
- 一個好的遊戲沒有好的配樂和音效,就好像無暇的水晶缺少了燈光的陪襯。而音樂不僅能渲染出玩家攻略遊戲時的氛圍,還能增加提高玩家對遊戲的認知度 @音樂和音效
- 所有Prefab實例的屬性都引用自Prefab的預設,當預設屬性改變時,對應的實例屬性也會相應改變。但當實例的某個屬性被手工調整後,即使修改預設的屬性值,該值也會以手工調整的值爲準
- 隨着360和Unity的合作,前者的360安全瀏覽器預裝Unity3d的方案實施會給Unity進軍中國市場帶來可觀的便捷
- Choosing GUI framework for your Unity3D project: EZGUI vs NGUI, Part I and Part II
- NGUI製作小地圖
- Particle Emitter: 只管發射粒子
- Particle Animator: 粒子動畫器,負責對發射器產生的粒子進行二次加工,比如使粒子的顏色不斷的變化,縮放粒子等
- Particle Renderer: 粒子渲染器,負責將粒子渲染到遊戲中,並且可以決定粒子的材質、光影等
- Select:在工程面板中快速選取該實例引用的預製
- Revert:將實例修改過的參數全部還原爲預製的參數
- Apply:將實例修改過的參數全部應用到預製,此時所有引用此預製的實例會一起受到影響而變動
- Unity3D使用C#實現Coroutines & Yield
- 所有使用yield的函數必須返回IEnumerator類型(這點和C# IEnumerable標準用法有差異!)
- 所有IEnumerator類型函數必須使用”StartCoroutine”這個函數觸發,不能單獨使用
- How do I use Yield in C#?
- Overview: Coroutines & Yield
- MonoBehaviour.StartCoroutine
- 和Inspector窗口關聯的public field重命名後Inspector中編輯的值會丟失!
- Be aware that any value adjusted in the Inspector will override the original value given to a variable within the script. It will not rewrite the value stated in the script, but simply replaces it when the game runs.? You can also revert to the values declared in the script by clicking on the Cog icon to the right of the component and choosing Reset from the drop-down menu that appears.
- public property不會進入Instactor
- enum在Inspector中會自動展示爲ComboBox
- 可通過SendMessage方法進行動態方法調用!
- 可採用Find/FindWithTag方法, 用字符串名稱的方式直接查找GameObject對象
- Service References的代碼可用VisualStudio自帶的“添加服務引用”功能,沒必要非命令行用mono的svcutil。成功生成後需要將對應的C#代碼文件拷貝到Assert下合適的目錄中,否則不會參加編譯
- 需要從C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0拷貝到*\Assets\Plugins下的dll有:
- System.Runtime.Serialization.dll
- System.Security.dll
- System.ServiceModel.dll
- System.IdentityModel.Selectors.dll // 該文件也是必要的,否則System.ServiceModel.dll不會被正確引入
- Consuming a WCF Service from Unity3D
- Is it possible to use WCF in scripts?
- Webservices In Unity
- Unity中使用WCF服務小教程
- Unity界面插件NGUI基礎教程
- Unity界面插件NGUI核心組件說明
- NGUI: Documentation
- 譯文: Unity3d 界面插件NGUI
- 調整NGUI“米老鼠”大小:
- Request free license
- Works With Any Game Engine,包括cocos2d、CEGUI、Unity等,還可方便自定義輸出格式
- Hierarchy窗口中是場景中的Game Object列表
- Project窗口中是磁盤上Assets文件夾中的內容,可用來創建Game Object
- 調試用Debug.Log()或者print函數打日誌
- 目前完全無法採用VisualStudio進行調試,只能用MonoDevelop。因Unity採用的是Mono運行時引擎而不是CLR,參考Debugging using Visual Studio 2010
- MonoDevelop對Unity的attach調試不能跨dll
- Unity自帶Mono版本可能是2.6
- 目前應謹慎考慮採用Mono寫需長時間運行的服務器程序
- MonoDevelop寫的源碼文件會以UTF8 Unix結尾方式保存
- Unity自帶的MonoDevelop和官方MonoDevelop的有區別的,不要升級MonoDevelop
- Application.LoadLevel()可以切換場景
- 文件打包用的是AssetBundle
- 所有通過Resources類加載的資源必須放在名爲Resources的目錄中
- All assets that are in a folder named "Resources" anywhere in the Assets folder can be accessed via theResources.Load functions. Multiple "Resources" folders may exist and when loading objects each will be examined.
- 不同Resources目錄同名目錄加載規則無法預測!
- Reading Excel Files and Sheets into Unity,用的是直接COM讀取excel的方式,沒有參與資源管線
- Reading Text Data Into A Unity Game
- 所有需要通過散包方式加載的文件必須通過WWW的方式,加載後可自動識別movie、text、texture和bytes四種格式
- Unity3d 動態讀取外部文件,包括對已封裝好的內部資源的加載和外部散包資源的加載
- 在Unity3D的WebGame中實現資源動態加載
- Used GUILayout.FlexibleSpace to center your automatic GUILayout
- Unity支持PInvoke(Platform Invocation Services)方式的插件,Unity加載Plugin時遇到的一些問題
- Plugins (Pro/Mobile-Only Feature)
- 定製Build流程: Build Player Pipeline
- Unity發佈的exe是非託管的,但邏輯dll是放在GAME_Data\Managed下的,代碼完全可以反編譯
- 沒發現Unity編譯後的資源目錄Game_Data中的文件結構和編輯器中的Project目錄有明顯的直接對應關係
- 編譯後資源都被放到sharedassets*.assets這樣的加密文件中,其中*可能是場景編號; Scene文件可能被放到了level*中
- Resources和其他目錄不一樣,其他目錄編譯完後會被自動打包合併,而Resources會有一個直接對應的resources.asset文件
- 相同的源反覆編譯生成的二進制不變
- 添加空場景後Game_Data/mainData發生改變
- prefab和各種資源關聯啥的會自動處理的,只把用到的打包
- 編輯器中Import Package但沒有真正使用不會對編譯結果造成影響
- Game.exe始終是穩定不變的
- 即使採用了Force Text選項,ProjectSettings下很多asset文件也還是二進制格式的
Unity doesn't support vector fonts. For every font size that you want to support, you need to import a new version of the font and change its import settings to a different size.@Unity 3.x Game Development by Exple Beginner's Guide[P201]
- Unity3D實用工具彙總
- Convert unity javascript (unityscript) to C#
- Unity3D屏幕截圖
- Unity目前能在手機上做到的效果,其中shader開放可免費使用
- 採用雙色半圓拼接餅狀圖是個技巧
- Unity問題集(不斷更新中)
- Inherit from MonoBehaviour
- Use the Awake or Start function to do initialisation
- The class name must match the file name
- Coroutines have a different syntax in C#
- Coroutines have to have a return type of IEnumerator and you yield using "yield return" instead of just "yield"
- Don't use namespaces
- Only member variables are serialized and are shown in the Inspector
- Avoid using the constructor or variable initializers
- Never initialize any values in the constructor or variable initializers in a MonoBehaviour script. Instead use Awake or Start for this purpose.
- Editor腳本是可以用C#寫的,編譯完後重啓Unity生效
- 不要在Editor腳本中採用中文菜單,有一定可能down機
- 如果亂碼,需要將文件保存爲UTF8格式
- Unity3d版本控制,哪些文件該放到svn的問題解決
- Unity目前的版本已經把需要svn控制的文件單獨歸類放到Project Settings裏了,現在只需要將Assets和ProjectSettings兩目錄加入svn即可 @Using External Version Control Systems with Unity
- 必須進行以下設置纔可將項目加入到svn管理:
- meta文件爲Unity內部使用,不要手工更改,也必須加入svn
- Unity內部是用GUID做文件間引用的
- Force Text可以將場景文件序列化爲文本,以利於版本控制,默認爲二進制
- Unity資源序列化採用的是YAML
- Unity3D強大的UI插件(NGUI)
- NGUI: Documentation
- 中文教程: Unity界面插件NGUI基礎教程
- 中文教程: Unity界面插件NGUI核心組件說明
- 相同Depth的控件會存在z排序不穩定問題!複雜界面要進行合理的規劃
- protobuf-net要採用net20版本的,不要用mono版的,據說有坑
- protobuf-csharp-port? and How to choose between protobuf-csharp-port and protobuf-net
- Hightmap Resolution會比Terrain Resolution大1
- 移動平臺小地形最好用模型,或者將Unity自帶的Terrain用插件導出爲模型,省性能。Unity Terrain依賴shader 2.0,某些手機不支持,即使導出地圖也依賴shader 2.0,自己做地形模型一張貼圖即可搞定
- Skybox的設置在Edit/RenderSettings/Skybox Material下,確保Game Overlay按鈕選中纔可以顯示出來
- 要第三人稱在場景中漫遊,需要將First Person Controller加入到場景
- Inspector窗口中的Static Checkbox: Checking this box tells Unity that a particular object in your scene will not be moving during the game, and as such can be lightmapped.
?
- 動態下載和加載資源:
- Web MMO需要儘量減少首次下載量,並能在遊戲運行中動態加載資源
- 遊戲運行時資源下載和加載,Unity Pro支持兩種方法: 資源包和資源目錄。非Pro版本智能使用資源目錄方法。一個資源包是一個外部的資源集合,遊戲中可以使用多個資源包,資源包是在發行版本以外存在的。資源目錄是一些資源的集合,資源目錄被包含在發行版本里面,但是並沒有和任何遊戲對象有關聯。資源目錄通過Edit->Project Settings->Player的First Streamed Level With Resource來設定
- 對Web MMO產品的建議
- 主要是資源大小的考慮,資源中,貼圖是大頭,需要儘量減少貼圖使用量。卡通類遊戲比較適合
- 由於動態下載和加載資源會一直存在,玩家角色在場景中的移動速度不宜過大,大場景不宜頻繁切換。資源動態下載需要佔用玩家一定網絡帶寬
- 使用Unity的準備工作:
- Unity畢竟是一款包含內容和功能很多的遊戲引擎。需要花一些時間熟悉其編輯器、代碼和開發環境、資源生產流程等主要功能。不建議項目開始前沒有一定的準備期
- unity的主要使用者是關卡策劃和程序員
- 目前Unity對中文的支持不是很好,因此在Unity中儘量不要使用中文,防止出現各種各樣莫名其妙的異常
- 如何調整太陽光方向和天空盒太陽貼圖方向一致?
- 一個好的遊戲沒有好的配樂和音效,就好像無暇的水晶缺少了燈光的陪襯。而音樂不僅能渲染出玩家攻略遊戲時的氛圍,還能增加提高玩家對遊戲的認知度 @音樂和音效
- 所有Prefab實例的屬性都引用自Prefab的預設,當預設屬性改變時,對應的實例屬性也會相應改變。但當實例的某個屬性被手工調整後,即使修改預設的屬性值,該值也會以手工調整的值爲準
- 隨着360和Unity的合作,前者的360安全瀏覽器預裝Unity3d的方案實施會給Unity進軍中國市場帶來可觀的便捷
- Choosing GUI framework for your Unity3D project: EZGUI vs NGUI, Part I and Part II
- NGUI製作小地圖
- Particle Emitter: 只管發射粒子
- Particle Animator: 粒子動畫器,負責對發射器產生的粒子進行二次加工,比如使粒子的顏色不斷的變化,縮放粒子等
- Particle Renderer: 粒子渲染器,負責將粒子渲染到遊戲中,並且可以決定粒子的材質、光影等
- Select:在工程面板中快速選取該實例引用的預製
- Revert:將實例修改過的參數全部還原爲預製的參數
- Apply:將實例修改過的參數全部應用到預製,此時所有引用此預製的實例會一起受到影響而變動
- Unity3D使用C#實現Coroutines & Yield
- 所有使用yield的函數必須返回IEnumerator類型(這點和C# IEnumerable標準用法有差異!)
- 所有IEnumerator類型函數必須使用”StartCoroutine”這個函數觸發,不能單獨使用
- How do I use Yield in C#?
- Overview: Coroutines & Yield
- MonoBehaviour.StartCoroutine
- 和Inspector窗口關聯的public field重命名後Inspector中編輯的值會丟失!
- Be aware that any value adjusted in the Inspector will override the original value given to a variable within the script. It will not rewrite the value stated in the script, but simply replaces it when the game runs.? You can also revert to the values declared in the script by clicking on the Cog icon to the right of the component and choosing Reset from the drop-down menu that appears.
- public property不會進入Instactor
- enum在Inspector中會自動展示爲ComboBox
- 可通過SendMessage方法進行動態方法調用!
- 可採用Find/FindWithTag方法, 用字符串名稱的方式直接查找GameObject對象
- Service References的代碼可用VisualStudio自帶的“添加服務引用”功能,沒必要非命令行用mono的svcutil。成功生成後需要將對應的C#代碼文件拷貝到Assert下合適的目錄中,否則不會參加編譯
- 需要從C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0拷貝到*\Assets\Plugins下的dll有:
- System.Runtime.Serialization.dll
- System.Security.dll
- System.ServiceModel.dll
- System.IdentityModel.Selectors.dll // 該文件也是必要的,否則System.ServiceModel.dll不會被正確引入
- Consuming a WCF Service from Unity3D
- Is it possible to use WCF in scripts?
- Webservices In Unity
- Unity中使用WCF服務小教程
- Unity界面插件NGUI基礎教程
- Unity界面插件NGUI核心組件說明
- NGUI: Documentation
- 譯文: Unity3d 界面插件NGUI
- 調整NGUI“米老鼠”大小:
- Request free license
- Works With Any Game Engine,包括cocos2d、CEGUI、Unity等,還可方便自定義輸出格式
- Hierarchy窗口中是場景中的Game Object列表
- Project窗口中是磁盤上Assets文件夾中的內容,可用來創建Game Object
- 調試用Debug.Log()或者print函數打日誌
- 目前完全無法採用VisualStudio進行調試,只能用MonoDevelop。因Unity採用的是Mono運行時引擎而不是CLR,參考Debugging using Visual Studio 2010
- MonoDevelop對Unity的attach調試不能跨dll
- Unity自帶Mono版本可能是2.6
- 目前應謹慎考慮採用Mono寫需長時間運行的服務器程序
- MonoDevelop寫的源碼文件會以UTF8 Unix結尾方式保存
- Unity自帶的MonoDevelop和官方MonoDevelop的有區別的,不要升級MonoDevelop
- Application.LoadLevel()可以切換場景
- 文件打包用的是AssetBundle
- 所有通過Resources類加載的資源必須放在名爲Resources的目錄中
- All assets that are in a folder named "Resources" anywhere in the Assets folder can be accessed via theResources.Load functions. Multiple "Resources" folders may exist and when loading objects each will be examined.
- 不同Resources目錄同名目錄加載規則無法預測!
- Reading Excel Files and Sheets into Unity,用的是直接COM讀取excel的方式,沒有參與資源管線
- Reading Text Data Into A Unity Game
- 所有需要通過散包方式加載的文件必須通過WWW的方式,加載後可自動識別movie、text、texture和bytes四種格式
- Unity3d 動態讀取外部文件,包括對已封裝好的內部資源的加載和外部散包資源的加載
- 在Unity3D的WebGame中實現資源動態加載
- Used GUILayout.FlexibleSpace to center your automatic GUILayout
- Unity支持PInvoke(Platform Invocation Services)方式的插件,Unity加載Plugin時遇到的一些問題
- Plugins (Pro/Mobile-Only Feature)
- 定製Build流程: Build Player Pipeline
- Unity發佈的exe是非託管的,但邏輯dll是放在GAME_Data\Managed下的,代碼完全可以反編譯
- 沒發現Unity編譯後的資源目錄Game_Data中的文件結構和編輯器中的Project目錄有明顯的直接對應關係
- 編譯後資源都被放到sharedassets*.assets這樣的加密文件中,其中*可能是場景編號; Scene文件可能被放到了level*中
- Resources和其他目錄不一樣,其他目錄編譯完後會被自動打包合併,而Resources會有一個直接對應的resources.asset文件
- 相同的源反覆編譯生成的二進制不變
- 添加空場景後Game_Data/mainData發生改變
- prefab和各種資源關聯啥的會自動處理的,只把用到的打包
- 編輯器中Import Package但沒有真正使用不會對編譯結果造成影響
- Game.exe始終是穩定不變的
- 即使採用了Force Text選項,ProjectSettings下很多asset文件也還是二進制格式的
Unity doesn't support vector fonts. For every font size that you want to support, you need to import a new version of the font and change its import settings to a different size.@Unity 3.x Game Development by Exple Beginner's Guide[P201]
- Unity3D實用工具彙總
- Convert unity javascript (unityscript) to C#
- Unity3D屏幕截圖
- Unity目前能在手機上做到的效果,其中shader開放可免費使用
- 採用雙色半圓拼接餅狀圖是個技巧
- Unity問題集(不斷更新中)
- Inherit from MonoBehaviour
- Use the Awake or Start function to do initialisation
- The class name must match the file name
- Coroutines have a different syntax in C#
- Coroutines have to have a return type of IEnumerator and you yield using "yield return" instead of just "yield"
- Don't use namespaces
- Only member variables are serialized and are shown in the Inspector
- Avoid using the constructor or variable initializers
- Never initialize any values in the constructor or variable initializers in a MonoBehaviour script. Instead use Awake or Start for this purpose.
- Editor腳本是可以用C#寫的,編譯完後重啓Unity生效
- 不要在Editor腳本中採用中文菜單,有一定可能down機
- 如果亂碼,需要將文件保存爲UTF8格式
- Unity3d版本控制,哪些文件該放到svn的問題解決
- Unity目前的版本已經把需要svn控制的文件單獨歸類放到Project Settings裏了,現在只需要將Assets和ProjectSettings兩目錄加入svn即可 @Using External Version Control Systems with Unity
- 必須進行以下設置纔可將項目加入到svn管理:
- meta文件爲Unity內部使用,不要手工更改,也必須加入svn
- Unity內部是用GUID做文件間引用的
- Force Text可以將場景文件序列化爲文本,以利於版本控制,默認爲二進制
- Unity資源序列化採用的是YAML
- Unity3D強大的UI插件(NGUI)
- NGUI: Documentation
- 中文教程: Unity界面插件NGUI基礎教程
- 中文教程: Unity界面插件NGUI核心組件說明
- 相同Depth的控件會存在z排序不穩定問題!複雜界面要進行合理的規劃
- protobuf-net要採用net20版本的,不要用mono版的,據說有坑
- protobuf-csharp-port? and How to choose between protobuf-csharp-port and protobuf-net
- Hightmap Resolution會比Terrain Resolution大1
- 移動平臺小地形最好用模型,或者將Unity自帶的Terrain用插件導出爲模型,省性能。Unity Terrain依賴shader 2.0,某些手機不支持,即使導出地圖也依賴shader 2.0,自己做地形模型一張貼圖即可搞定
- Skybox的設置在Edit/RenderSettings/Skybox Material下,確保Game Overlay按鈕選中纔可以顯示出來
- 要第三人稱在場景中漫遊,需要將First Person Controller加入到場景
- Inspector窗口中的Static Checkbox: Checking this box tells Unity that a particular object in your scene will not be moving during the game, and as such can be lightmapped.
?
- 動態下載和加載資源:
- Web MMO需要儘量減少首次下載量,並能在遊戲運行中動態加載資源
- 遊戲運行時資源下載和加載,Unity Pro支持兩種方法: 資源包和資源目錄。非Pro版本智能使用資源目錄方法。一個資源包是一個外部的資源集合,遊戲中可以使用多個資源包,資源包是在發行版本以外存在的。資源目錄是一些資源的集合,資源目錄被包含在發行版本里面,但是並沒有和任何遊戲對象有關聯。資源目錄通過Edit->Project Settings->Player的First Streamed Level With Resource來設定
- 對Web MMO產品的建議
- 主要是資源大小的考慮,資源中,貼圖是大頭,需要儘量減少貼圖使用量。卡通類遊戲比較適合
- 由於動態下載和加載資源會一直存在,玩家角色在場景中的移動速度不宜過大,大場景不宜頻繁切換。資源動態下載需要佔用玩家一定網絡帶寬
- 使用Unity的準備工作:
- Unity畢竟是一款包含內容和功能很多的遊戲引擎。需要花一些時間熟悉其編輯器、代碼和開發環境、資源生產流程等主要功能。不建議項目開始前沒有一定的準備期
- unity的主要使用者是關卡策劃和程序員
- 目前Unity對中文的支持不是很好,因此在Unity中儘量不要使用中文,防止出現各種各樣莫名其妙的異常
- 如何調整太陽光方向和天空盒太陽貼圖方向一致?
- 一個好的遊戲沒有好的配樂和音效,就好像無暇的水晶缺少了燈光的陪襯。而音樂不僅能渲染出玩家攻略遊戲時的氛圍,還能增加提高玩家對遊戲的認知度 @音樂和音效
- 所有Prefab實例的屬性都引用自Prefab的預設,當預設屬性改變時,對應的實例屬性也會相應改變。但當實例的某個屬性被手工調整後,即使修改預設的屬性值,該值也會以手工調整的值爲準
- 隨着360和Unity的合作,前者的360安全瀏覽器預裝Unity3d的方案實施會給Unity進軍中國市場帶來可觀的便捷
- Choosing GUI framework for your Unity3D project: EZGUI vs NGUI, Part I and Part II
- NGUI製作小地圖
- Particle Emitter: 只管發射粒子
- Particle Animator: 粒子動畫器,負責對發射器產生的粒子進行二次加工,比如使粒子的顏色不斷的變化,縮放粒子等
- Particle Renderer: 粒子渲染器,負責將粒子渲染到遊戲中,並且可以決定粒子的材質、光影等
- Select:在工程面板中快速選取該實例引用的預製
- Revert:將實例修改過的參數全部還原爲預製的參數
- Apply:將實例修改過的參數全部應用到預製,此時所有引用此預製的實例會一起受到影響而變動
- Unity3D使用C#實現Coroutines & Yield
- 所有使用yield的函數必須返回IEnumerator類型(這點和C# IEnumerable標準用法有差異!)
- 所有IEnumerator類型函數必須使用”StartCoroutine”這個函數觸發,不能單獨使用
- How do I use Yield in C#?
- Overview: Coroutines & Yield
- MonoBehaviour.StartCoroutine
- 和Inspector窗口關聯的public field重命名後Inspector中編輯的值會丟失!
- Be aware that any value adjusted in the Inspector will override the original value given to a variable within the script. It will not rewrite the value stated in the script, but simply replaces it when the game runs.? You can also revert to the values declared in the script by clicking on the Cog icon to the right of the component and choosing Reset from the drop-down menu that appears.
- public property不會進入Instactor
- enum在Inspector中會自動展示爲ComboBox
- 可通過SendMessage方法進行動態方法調用!
- 可採用Find/FindWithTag方法, 用字符串名稱的方式直接查找GameObject對象
- Service References的代碼可用VisualStudio自帶的“添加服務引用”功能,沒必要非命令行用mono的svcutil。成功生成後需要將對應的C#代碼文件拷貝到Assert下合適的目錄中,否則不會參加編譯
- 需要從C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0拷貝到*\Assets\Plugins下的dll有:
- System.Runtime.Serialization.dll
- System.Security.dll
- System.ServiceModel.dll
- System.IdentityModel.Selectors.dll // 該文件也是必要的,否則System.ServiceModel.dll不會被正確引入
- Consuming a WCF Service from Unity3D
- Is it possible to use WCF in scripts?
- Webservices In Unity
- Unity中使用WCF服務小教程
- Unity界面插件NGUI基礎教程
- Unity界面插件NGUI核心組件說明
- NGUI: Documentation
- 譯文: Unity3d 界面插件NGUI
- 調整NGUI“米老鼠”大小:
- Request free license
- Works With Any Game Engine,包括cocos2d、CEGUI、Unity等,還可方便自定義輸出格式
- Hierarchy窗口中是場景中的Game Object列表
- Project窗口中是磁盤上Assets文件夾中的內容,可用來創建Game Object
- 調試用Debug.Log()或者print函數打日誌
- 目前完全無法採用VisualStudio進行調試,只能用MonoDevelop。因Unity採用的是Mono運行時引擎而不是CLR,參考Debugging using Visual Studio 2010
- MonoDevelop對Unity的attach調試不能跨dll
- Unity自帶Mono版本可能是2.6
- 目前應謹慎考慮採用Mono寫需長時間運行的服務器程序
- MonoDevelop寫的源碼文件會以UTF8 Unix結尾方式保存
- Unity自帶的MonoDevelop和官方MonoDevelop的有區別的,不要升級MonoDevelop
- Application.LoadLevel()可以切換場景
- 文件打包用的是AssetBundle
- 所有通過Resources類加載的資源必須放在名爲Resources的目錄中
- All assets that are in a folder named "Resources" anywhere in the Assets folder can be accessed via theResources.Load functions. Multiple "Resources" folders may exist and when loading objects each will be examined.
- 不同Resources目錄同名目錄加載規則無法預測!
- Reading Excel Files and Sheets into Unity,用的是直接COM讀取excel的方式,沒有參與資源管線
- Reading Text Data Into A Unity Game
- 所有需要通過散包方式加載的文件必須通過WWW的方式,加載後可自動識別movie、text、texture和bytes四種格式
- Unity3d 動態讀取外部文件,包括對已封裝好的內部資源的加載和外部散包資源的加載
- 在Unity3D的WebGame中實現資源動態加載
- Used GUILayout.FlexibleSpace to center your automatic GUILayout
- Unity支持PInvoke(Platform Invocation Services)方式的插件,Unity加載Plugin時遇到的一些問題
- Plugins (Pro/Mobile-Only Feature)
- 定製Build流程: Build Player Pipeline
- Unity發佈的exe是非託管的,但邏輯dll是放在GAME_Data\Managed下的,代碼完全可以反編譯
- 沒發現Unity編譯後的資源目錄Game_Data中的文件結構和編輯器中的Project目錄有明顯的直接對應關係
- 編譯後資源都被放到sharedassets*.assets這樣的加密文件中,其中*可能是場景編號; Scene文件可能被放到了level*中
- Resources和其他目錄不一樣,其他目錄編譯完後會被自動打包合併,而Resources會有一個直接對應的resources.asset文件
- 相同的源反覆編譯生成的二進制不變
- 添加空場景後Game_Data/mainData發生改變
- prefab和各種資源關聯啥的會自動處理的,只把用到的打包
- 編輯器中Import Package但沒有真正使用不會對編譯結果造成影響
- Game.exe始終是穩定不變的
- 即使採用了Force Text選項,ProjectSettings下很多asset文件也還是二進制格式的
Unity doesn't support vector fonts. For every font size that you want to support, you need to import a new version of the font and change its import settings to a different size.@Unity 3.x Game Development by Exple Beginner's Guide[P201]
- Unity3D實用工具彙總
- Convert unity javascript (unityscript) to C#
- Unity3D屏幕截圖
- Unity目前能在手機上做到的效果,其中shader開放可免費使用
- 採用雙色半圓拼接餅狀圖是個技巧
- Unity問題集(不斷更新中)
- Inherit from MonoBehaviour
- Use the Awake or Start function to do initialisation
- The class name must match the file name
- Coroutines have a different syntax in C#
- Coroutines have to have a return type of IEnumerator and you yield using "yield return" instead of just "yield"
- Don't use namespaces
- Only member variables are serialized and are shown in the Inspector
- Avoid using the constructor or variable initializers
- Never initialize any values in the constructor or variable initializers in a MonoBehaviour script. Instead use Awake or Start for this purpose.
- Editor腳本是可以用C#寫的,編譯完後重啓Unity生效
- 不要在Editor腳本中採用中文菜單,有一定可能down機
- 如果亂碼,需要將文件保存爲UTF8格式
- Unity3d版本控制,哪些文件該放到svn的問題解決
- Unity目前的版本已經把需要svn控制的文件單獨歸類放到Project Settings裏了,現在只需要將Assets和ProjectSettings兩目錄加入svn即可 @Using External Version Control Systems with Unity
- 必須進行以下設置纔可將項目加入到svn管理:
- meta文件爲Unity內部使用,不要手工更改,也必須加入svn
- Unity內部是用GUID做文件間引用的
- Force Text可以將場景文件序列化爲文本,以利於版本控制,默認爲二進制
- Unity資源序列化採用的是YAML
- Unity3D強大的UI插件(NGUI)
- NGUI: Documentation
- 中文教程: Unity界面插件NGUI基礎教程
- 中文教程: Unity界面插件NGUI核心組件說明
- 相同Depth的控件會存在z排序不穩定問題!複雜界面要進行合理的規劃
- protobuf-net要採用net20版本的,不要用mono版的,據說有坑
- protobuf-csharp-port? and How to choose between protobuf-csharp-port and protobuf-net
- Hightmap Resolution會比Terrain Resolution大1
- 移動平臺小地形最好用模型,或者將Unity自帶的Terrain用插件導出爲模型,省性能。Unity Terrain依賴shader 2.0,某些手機不支持,即使導出地圖也依賴shader 2.0,自己做地形模型一張貼圖即可搞定
- Skybox的設置在Edit/RenderSettings/Skybox Material下,確保Game Overlay按鈕選中纔可以顯示出來
- 要第三人稱在場景中漫遊,需要將First Person Controller加入到場景
- Inspector窗口中的Static Checkbox: Checking this box tells Unity that a particular object in your scene will not be moving during the game, and as such can be lightmapped.
?
- 動態下載和加載資源:
- Web MMO需要儘量減少首次下載量,並能在遊戲運行中動態加載資源
- 遊戲運行時資源下載和加載,Unity Pro支持兩種方法: 資源包和資源目錄。非Pro版本智能使用資源目錄方法。一個資源包是一個外部的資源集合,遊戲中可以使用多個資源包,資源包是在發行版本以外存在的。資源目錄是一些資源的集合,資源目錄被包含在發行版本里面,但是並沒有和任何遊戲對象有關聯。資源目錄通過Edit->Project Settings->Player的First Streamed Level With Resource來設定
- 對Web MMO產品的建議
- 主要是資源大小的考慮,資源中,貼圖是大頭,需要儘量減少貼圖使用量。卡通類遊戲比較適合
- 由於動態下載和加載資源會一直存在,玩家角色在場景中的移動速度不宜過大,大場景不宜頻繁切換。資源動態下載需要佔用玩家一定網絡帶寬
- 使用Unity的準備工作:
- Unity畢竟是一款包含內容和功能很多的遊戲引擎。需要花一些時間熟悉其編輯器、代碼和開發環境、資源生產流程等主要功能。不建議項目開始前沒有一定的準備期
- unity的主要使用者是關卡策劃和程序員
- 目前Unity對中文的支持不是很好,因此在Unity中儘量不要使用中文,防止出現各種各樣莫名其妙的異常
- 如何調整太陽光方向和天空盒太陽貼圖方向一致?
- 一個好的遊戲沒有好的配樂和音效,就好像無暇的水晶缺少了燈光的陪襯。而音樂不僅能渲染出玩家攻略遊戲時的氛圍,還能增加提高玩家對遊戲的認知度 @音樂和音效
- 所有Prefab實例的屬性都引用自Prefab的預設,當預設屬性改變時,對應的實例屬性也會相應改變。但當實例的某個屬性被手工調整後,即使修改預設的屬性值,該值也會以手工調整的值爲準
- 隨着360和Unity的合作,前者的360安全瀏覽器預裝Unity3d的方案實施會給Unity進軍中國市場帶來可觀的便捷
- Choosing GUI framework for your Unity3D project: EZGUI vs NGUI, Part I and Part II
- NGUI製作小地圖
- Particle Emitter: 只管發射粒子
- Particle Animator: 粒子動畫器,負責對發射器產生的粒子進行二次加工,比如使粒子的顏色不斷的變化,縮放粒子等
- Particle Renderer: 粒子渲染器,負責將粒子渲染到遊戲中,並且可以決定粒子的材質、光影等
- Select:在工程面板中快速選取該實例引用的預製
- Revert:將實例修改過的參數全部還原爲預製的參數
- Apply:將實例修改過的參數全部應用到預製,此時所有引用此預製的實例會一起受到影響而變動
- Unity3D使用C#實現Coroutines & Yield
- 所有使用yield的函數必須返回IEnumerator類型(這點和C# IEnumerable標準用法有差異!)
- 所有IEnumerator類型函數必須使用”StartCoroutine”這個函數觸發,不能單獨使用
- How do I use Yield in C#?
- Overview: Coroutines & Yield
- MonoBehaviour.StartCoroutine
- 和Inspector窗口關聯的public field重命名後Inspector中編輯的值會丟失!
- Be aware that any value adjusted in the Inspector will override the original value given to a variable within the script. It will not rewrite the value stated in the script, but simply replaces it when the game runs.? You can also revert to the values declared in the script by clicking on the Cog icon to the right of the component and choosing Reset from the drop-down menu that appears.
- public property不會進入Instactor
- enum在Inspector中會自動展示爲ComboBox
- 可通過SendMessage方法進行動態方法調用!
- 可採用Find/FindWithTag方法, 用字符串名稱的方式直接查找GameObject對象
- Service References的代碼可用VisualStudio自帶的“添加服務引用”功能,沒必要非命令行用mono的svcutil。成功生成後需要將對應的C#代碼文件拷貝到Assert下合適的目錄中,否則不會參加編譯
- 需要從C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0拷貝到*\Assets\Plugins下的dll有:
- System.Runtime.Serialization.dll
- System.Security.dll
- System.ServiceModel.dll
- System.IdentityModel.Selectors.dll // 該文件也是必要的,否則System.ServiceModel.dll不會被正確引入
- Consuming a WCF Service from Unity3D
- Is it possible to use WCF in scripts?
- Webservices In Unity
- Unity中使用WCF服務小教程
- Unity界面插件NGUI基礎教程
- Unity界面插件NGUI核心組件說明
- NGUI: Documentation
- 譯文: Unity3d 界面插件NGUI
- 調整NGUI“米老鼠”大小:
- Request free license
- Works With Any Game Engine,包括cocos2d、CEGUI、Unity等,還可方便自定義輸出格式