/// <summary> /// 创建根文件夹 /// </summary> /// <returns>The root.</returns> /// <param name="name">Name.</param> /// <param name="parentTrm">Parent trm.</param> /// <param name="offx">Offx.</param> /// <param name="offy">Offy.</param> public static TreeFolder CreateRootFolder(string rootFolderName, RectTransform parentTrm, TreeContainer menuList, float offx, float offy) { TreeFolder folder = TreeFolder.Create(rootFolderName, parentTrm, menuList); folder.ParentFolder = null; folder.BeRootFolder = true; //设置PosX,PosY folder._RectTransform.anchoredPosition = new Vector2(offx - UIEnum.FolderBtnW, offy); //根目录去掉+-号显示 folder.FolderBtn.gameObject.SetActive(false); //创建菜单 folder.CreateMenu(folder); return(folder); }
/// <summary> /// 创建子文件夹 /// 不需要加入xy偏移量,因为这个偏移量是固定的 /// </summary> /// <param name="name">Name.</param> /// <param name="parentTrm">Parent trm.</param> public static TreeFolder CreateSubFolder(string folderName, TreeFolder parentFolder, TreeContainer menuList) { //添加文件夹时,如果父文件夹没有打开,先打开再添加 if (!parentFolder.BeFolderOpen) { parentFolder.BeFolderOpen = true; } var folder = TreeFolder.Create(folderName, parentFolder.SubRootRectTransform, menuList); folder.ParentFolder = parentFolder; folder.BeRootFolder = false; //这里计算的是相对父folder的位置 //float h = (parentFolder.SubItemNums + 1) * MenuListFolder.FolderH; float h = parentFolder.CurFolderH; folder._RectTransform.anchoredPosition = new Vector2(UIEnum.FolderBtnW, -h); folder.CreateMenu(folder); parentFolder.ItemList.Add(folder); //新建文件夹后通知上级进行重新排序,比如rootFolder下有10个subFolder,在第二个subFolder下新建,那么后面所有subFolder都要重排 //这里注意下ui坐标系是左下是0,0所以负值是向下移动 parentFolder.ParentYOrder(-UIEnum.FolderH, folder.IndexInParentFolder); //刷新下MenuList的边框宽,用于刷新MenuList滚动区域,item距离Menulist左边距离+两个图标间隔+4(文字和图标间隔)+w1(文字长度) if (!folder.BeRootFolder) { var textRt = folder.ItemNameText.gameObject.GetComponent <RectTransform>(); float w = Tools.GetStringW(folder.ItemNameText.text, UIEnum.FontSize); float w1 = UIEnum.FolderBtnW + UIEnum.FolderImageW + w; float _w = folder.CurItemLeftOffset + UIEnum.ItemImageW * 2 + 4 + w1; menuList.SetTreeW(_w); menuList.RefreshTreeArea(); } return(folder); }