unity3d視頻教程(共11節(jié))
Unity3D游戲制作教程(共5節(jié))
unity3d第一人稱冒險游戲制作教程(共10節(jié))
非常實用的unity3d腳本800多個,都是帶代碼和說明解釋的實例教程,很實用,方便開發(fā)者直接利用
3D網(wǎng)頁游戲場景打包與加載
AddComponentMenu 添加組件菜單項
Android開發(fā)環(huán)境搭建
C#繪制準(zhǔn)心腳本
DontDestroyOnLoad重復(fù)實例化
FixUpdate與Update的區(qū)別
iTween動畫庫:關(guān)于Move移動篇 自動尋路.
java、android項目在eclipse中顯示中文亂碼問題
JS腳本控制逐漸淡出的歡迎界面
LOGO漸隱漸出的實現(xiàn)方法
Ogre的公告板功能腳本
Runtime切換攝像機
Unity3D Editor類(Inspector)經(jīng)驗總結(jié)
Unity3D Editor類(Inspector)經(jīng)驗總結(jié)。
1. Editor類中的全部控件描畫,都是通過GUI完成的,所以不一定非要使用EditorGUILayout,使用GUILayout有時候更方便。
2. 因為1, 所以我們可以使用GUI直接做一些完全自定義的描畫。例如在一張圖片上畫一個區(qū)域選擇框。
3. Inspector光標(biāo)定位Bug,具體表現(xiàn)為,代碼無錯誤,無任何提示。但Inspector的編輯光標(biāo)定位卻不準(zhǔn)。我做了一些簡單的測試:
3.1 該問題與 Component 腳本(就是你寫的類)的編寫和 Editor 類(也就是 Inspector 的自定義類)的編寫無關(guān)。
3.2 該問題的出現(xiàn),似乎與編譯緩存有關(guān),出現(xiàn)問題后,我嘗試過刪除Assets同級目錄下的obj文件夾(這個文件夾可以隨意刪除)或Library文件夾(刪除這個會導(dǎo)致全部的關(guān)系鏈接丟失,需要手動恢復(fù)腳本間的掛接關(guān)系),之后重新打開Unity,Inspector光標(biāo)正常了。
3.3 經(jīng)過反復(fù)測試發(fā)現(xiàn),該bug似乎和MeshFilter有關(guān)。當(dāng)你的Component中依賴了MeshFilter,但Mesh卻是空,就會出現(xiàn)該bug。例如:
[RequireComponent(typeof(MeshCollider),
typeof(MeshRenderer))]
public class Test : MonoBehaviour
{
……
}
所以我將MeshFilter的添加,延遲到了Start中。
void
Start()
{
// 沒有在定義時直接添加 MeshFilter 的依賴關(guān)系,是因為,直接那么做會導(dǎo)致Editor出錯。
// 雖然很詭異,但不清楚原因。所以只有在Start中手動添加了。
MeshFilter mf = GetComponent<MeshFilter>();
if (mf
== null)
mf = gameObject.AddComponent<MeshFilter>();
……
}
4. EditorGUIUtility.LookLikeControls(80f) 很有用,它可以讓所有控件的前置標(biāo)簽的寬度統(tǒng)一。雖然不夠靈活,但至少比沒有強,不過也僅僅比沒有強一點。這句代碼可以寫在 public override void OnInspectorGUI() 中。
5. 有些資料中說,Editor的派生類不能被繼承,這個是錯誤的。你可以從Control派生出Button,然后讓Button的ButtonEditor再繼承ControlEditor,這樣可以省去很多功夫。
6. Editor寫成模板類的時候,需要小心。public class ControlEditor<T> : Editor這樣的定義,將不能編譯出正確的Inspector。
7. 編輯環(huán)境下,和運行環(huán)境下,是兩套不同的體系,為Inspector帶來的問題是,動態(tài)數(shù)據(jù)無法直接被應(yīng)用到Runtime(運行時)中。例如,你根據(jù)一個xml解析出一些數(shù)據(jù)。在編輯中,你會描畫一個文件選擇框(TextAsset對象),然后選擇一個xml文件。之后文件被解析,在ExecuteInEditMode類中,編輯時這些解析出的數(shù)據(jù)也可以正常使用。一旦你點擊了運行那個小三角,一切解析出的臨時數(shù)據(jù)都將灰飛煙滅,記得在Start或Update中檢查必要的數(shù)據(jù),發(fā)現(xiàn)沒有就及時處理。所見即所得有時候只是幻覺。
8. 你可以定義一些GUIStyle,用來控制描畫樣式。這些GUIStyle可以是系統(tǒng)默認(rèn)的,例如:
GUIStyle Style = new GUIStyle(EditorStyles.toolbarButton);
也可以完全的自定義。但記得,直接修改EditorStyles.toolbarButton會讓系統(tǒng)所有用到該GUIStyle的地方一起變化。所以建議不要直接修改系統(tǒng)默認(rèn)樣式。
9. GUI中沒有ComboBox或List這樣的控件,只能自己做。
10. 如果你想用一個字符串?dāng)?shù)組生成一個彈出菜單,只有enum類型可以這么做。
11. GUI中的控件并不是以面向?qū)ο笏枷朐O(shè)計的,自然,Editor類中的描畫也就變得一塌糊涂。其底層封裝應(yīng)該是類似GDI+這樣的描畫庫。但GUI的封裝做的并不好。
朱峰社區(qū)網(wǎng)頁版(手機掃描-分享-添加到屏幕)
朱峰社區(qū)微信公眾號(微信掃一掃-關(guān)注)
未知用戶
未知用戶
贊2
踩0
15年8月10日
未知用戶
贊2
踩0
15年8月9日
未知用戶
贊1
踩0
15年8月9日
未知用戶
贊0
踩0
17年9月24日
未知用戶
贊0
踩0
17年9月3日
未知用戶
贊0
踩0
17年8月11日
未知用戶
贊0
踩0
17年7月6日
未知用戶
贊0
踩0
17年1月11日
未知用戶
贊0
踩0
17年1月10日
未知用戶
贊0
踩0
16年11月25日
未知用戶
贊0
踩0
16年11月23日
未知用戶
贊0
踩0
16年11月21日
未知用戶
贊0
踩0
16年11月21日
未知用戶
贊0
踩0
16年11月19日
未知用戶
贊0
踩0
16年11月18日
未知用戶
贊0
踩0
16年11月16日
未知用戶
贊0
踩0
16年11月15日
未知用戶
贊0
踩0
16年11月11日
未知用戶
贊0
踩0
16年11月10日
未知用戶
贊0
踩0
16年11月10日
未知用戶
贊0
踩0
16年11月9日
未知用戶
贊0
踩0
16年11月9日
未知用戶
贊0
踩0
16年11月9日
未知用戶
贊0
踩0
16年11月9日
未知用戶
贊0
踩0
16年11月6日
未知用戶
贊0
踩0
16年11月5日
未知用戶
贊0
踩0
16年10月31日
未知用戶
贊0
踩0
16年10月29日
未知用戶
贊0
踩0
16年10月25日
更多留言(1/20)
2005-2025 朱峰社區(qū) 版權(quán)所有 遼ICP備2021001865號-1
2005-2025 ZhuFeng Community All Rights Reserved
VIP