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