public void ReName() { //base.ReName (); InputTextDialog.Open( delegate(byte[] bts) { //创建文件夹 IoBuffer ib = new IoBuffer(); ib.PutBytes(bts); string newName = ib.GetString(); Name = newName;//这个名称不设置的化,当重命名后,再复制黏贴就出问题,显示的是未改名前的名称 ResizeTextRect(newName); //刷TreeContainer的W.这里w的算法,跟上面Create中一致 float _w = this.CurItemLeftOffset + UIEnum.ItemImageW + 4 + UIEnum.ItemImageW + Tools.GetStringW(this.ItemNameText.text, UIEnum.FontSize); MyTreeContainer.SetTreeW(_w); MyTreeContainer.RefreshTreeArea(); } ); }
/// <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); }
/// <summary> /// 这个方法只有从folder右键创建item时调用 /// 其他地方用InsertItem /// </summary> /// <param name="itemName">Item name.</param> /// <param name="parentFolder">Parent folder.</param> /// <param name="menuList">Menu list.</param> public static TreeItem Create(string itemName, TreeFolder parentFolder, TreeContainer treeContainer) { //添加文件夹时,如果父文件夹没有打开,先打开再添加 if (!parentFolder.BeFolderOpen) { parentFolder.BeFolderOpen = true; } //实例化文件夹 GameObject go = GameObject.Instantiate(Resources.Load("Prefabs/TreeItem")) as GameObject; go.name = itemName; TreeItem item = go.GetComponent <TreeItem>(); item.MyTreeContainer = treeContainer; item.BeFolder = false; item.Name = itemName; go.transform.SetParent(parentFolder.SubRootRectTransform as Transform); item._RectTransform = go.GetComponent <RectTransform>(); item._RectTransform.pivot = new Vector2(0, 1); item._RectTransform.anchorMax = new Vector2(0, 1); item._RectTransform.anchorMin = new Vector2(0, 1); item.ItemNameText.text = itemName; item.ItemNameText.fontSize = UIEnum.FontSize; var textRt = item.ItemNameText.gameObject.GetComponent <RectTransform>(); float w = Tools.GetStringW(item.ItemNameText.text, UIEnum.FontSize); textRt.sizeDelta = new Vector2(w, UIEnum.ItmeH); //重新设置下Folder的边框宽度 float w1 = UIEnum.ItemImageW + w; item._RectTransform.sizeDelta = new Vector2(w1, UIEnum.ItemH); item.ParentFolder = parentFolder; //float h = (parentFolder.SubItemNums + 1) * UIEnum.ItemH; float h = parentFolder.CurFolderH; //float h = parentFolder.CurFolderH; item._RectTransform.anchoredPosition = new Vector2(UIEnum.FolderBtnW * 2 + 4, -h); item.CreateMenu(item); parentFolder.ItemList.Add(item); parentFolder.RefreshItemNum(); //新建文件夹后通知上级进行重新排序,比如rootFolder下有10个subFolder,在第二个subFolder下新建,那么后面所有subFolder都要重排 //这里注意下ui坐标系是左下是0,0所以负值是向下移动 parentFolder.ParentYOrder(-UIEnum.ItemH, item.IndexInParentFolder); //刷新下MenuList的边框宽,用于刷新MenuList滚动区域,item距离Menulist左边距离+一个图标间隔+4(文字和图标间隔)+w1(文字长度) float _w = item.CurItemLeftOffset + UIEnum.ItemImageW + 4 + w1; treeContainer.SetTreeW(_w); treeContainer.RefreshTreeArea(); return(item); }