可以发现下拉组件打开的内容是复制Template的,所以可以利用这个,创建两个脚本,一个用来接受,一个用来监听是不是打开了。
Dropdown挂载接受脚本,Template挂载监听脚本
using System; public class ReceiveDropDownStatus : UIMonoViewComponent { public Action<bool> StatusChange; }
using Frame.Runtime.UI; public class ListenDropDownStatus : UIMonoViewComponent { private ReceiveDropDownStatus m_Receive; // Start is called before the first frame update void Start() { if (m_Receive == null) { m_Receive = this.transform.parent.GetComponent<ReceiveDropDownStatus>(); } if (this.gameObject.name == "Dropdown List") { if (m_Receive.StatusChange != null) { m_Receive.StatusChange(true); } } } private void OnDisable() { if (this.gameObject.name == "Dropdown List") { if (m_Receive.StatusChange != null) { m_Receive.StatusChange(false); } } } }