編輯器擴充套件(一)Dropdown有不可選的選項

2021-08-15 01:16:06 字數 2373 閱讀 8808

前幾日群裡的小夥伴問道,如何讓dropdown下的選項不可選(變成灰色)。

最初直接想的是把toggleinteractable設定成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檢視。圖中我麼建立了乙個立方體物件,接著給...