在使用UGUI的 DropDown 时, Canvas 的 Render Mode 选择了 Screen Space--Camera, 此时遇到一个小bug, 当我把这个下拉组件放到屏幕中间附近时, 下拉列表显示是正常的。当我把组件整体移到边缘,突然出现下拉列表的 Content 的坐标 不合法,由于 ugui 的点击关闭处理是在 Canvas 的子节点最下方又生成一个 全屏的 遮罩 来保证实现 "点击关闭",所以此时整个界面卡死..........翻遍源码断点我也没找到问题..
(中间:边缘)
另外,他的下拉列表实现, 不适合多个数据,假如有百十个就生成百十个下来的子菜单,这明显是不合理的,所以,把下拉改成 无限循环 列表是必须的。
于是,开始自己动手造轮子:
using System;
using System.Collections;
using System.Collections.Generic;
using Assets.UI;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// Introduction: GDropDown
/// Author: Cheng
/// Time:
/// </summary>
[AddComponentMenu("UI/GDropdown", 100)]
[RequireComponent(typeof(RectTransform))]
public class GDropDown : MonoBehaviour
{
[Tooltip("Button of Whole Component")]
[SerializeField]
private Toggle m_CaptionToggle;
/// <summary>
/// Button of Whole Component
/// </summary>
public Toggle CaptionToggle { get { return m_CaptionToggle; } set { SetCaptionButton(value);} }
[Tooltip("Display Text of Selected Item")]
[SerializeField]
private Text m_CaptionText;
/// <summary>
/// Display Text of Selected Item
/// </summary>
public Text CaptionText { get { return m_CaptionText; } set { m_CaptionText = value; } }
[Tooltip("Display Image of Selected Item")]
[SerializeField]
private Image m_CaptionImage;
/// <summary>
/// Display Image of Selected Item
/// </summary>
public Image CaptionImage { get { return m_CaptionImage; } set { m_CaptionImage = value; } }
[Space]
[Tooltip("Drop List")]
[SerializeField]
private ScrollRect m_ScrollRect;
/// <summary>
/// Drop List
/// </summary>
public ScrollRec