前幾日群裡的小夥伴問道,如何讓dropdown下的選項不可選(變成灰色)。
最初直接想的是把toggle
的interactable
設定成false
就好了。
可是發現unity的dropdown沒法獲取物體。
好吧,我們可以用getchild()
方法進去找子物體的toggle
,可是太麻煩了。
所以乾脆就變成做個編輯器擴充套件。
完成後的設定
完成後的截圖
在建立時,用unity的dropdown建立,然後刪除unity的dropdown,再新增這個指令碼。
dropdown**:
using system.collections.generic;
using unityengine;
using unityengine.ui;
[addcomponentmenu("ui/dr dropdown")]
[requirecomponent(typeof(image))]
public
class drdropdown : dropdown
}///
/// 儲存的toggle
///private listm_itemtoggles = new list();
////// 列表開啟狀態時,可以獲取toggle,可改變interactable動態修改是否可選
//////
///public toggle getitemtoggle(int index)
return m_itemtoggles[index];
}public
drdropdown() : base()
protected
override
void
awake()
}if (captiontext == null)
}if (itemtext == null)}}
////// 開啟列表時,建立item的callback
//////
///protected
override dropdownitem createitem(dropdownitem itemtemplate)
}return item;
}///
/// 關閉列表時,銷毀item的callback
//////
protected
override
void
destroyitem(dropdownitem item)
base.destroyitem(item);}}
editor**如下:
using unityengine;
using unityengine.ui;
#if unity_editor
using unityeditor;
using unityeditorinternal;
using unityeditor.ui;
#endif
#if unity_editor
[caneditmultipleobjects]
[customeditor(typeof(drdropdown), true)]
public
class drdropdowneditor : dropdowneditor
}protected
override
void
onenable()
////// 建立m_defaultdisables的reorderablelist
///private
void
recreatelist()
;m_list.drawelementcallback = (rect rect, int index, bool isactive, bool isfocused) =>
;m_list.onaddcallback = (list) =>;}
public
override
void
oninspectorgui()
editorguilayout.space();
base.oninspectorgui();
}}#endif
Unity編輯器擴充套件
unity引擎除了提供大部分通用的功能以外,還為開發者提供了編輯器的擴充套件開發介面,開發者可以編寫編輯器指令碼,打造適合自己的遊戲輔助工具和定製的編輯器。以前指令碼開發中使用的一些api和元件類,都屬於執行時類,unity還提供了編輯器類用於編輯器的擴充套件開發,包括編輯器環境下使用的gui類,編...
編輯器擴充套件篇 使用GUIStyle讓編輯器更好看
在guilayout和editorguilayout裡面經常能看到guistyle這個引數。guistyle主要作用就是讓編輯器更好看一點。下面兩張圖,乙個使用了guistyle,乙個沒有使用。準確來說應該是,乙個使用了特定的guistyle,乙個使用了預設的guistyle,即呼叫guilayou...
Unity擴充套件編輯器三
scene檢視是編輯遊戲模型的地方,其實它還可以進行編輯,如下圖所示,我給scene檢視做了簡單的編輯 scene檢視的擴充套件是基於物件的,意思是你必須在hierarchy檢視中選擇乙個物件才行,hierarchy檢視中選擇不同的物件可以有不同的scene檢視。圖中我麼建立了乙個立方體物件,接著給...