You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
644 lines
21 KiB
644 lines
21 KiB
3 years ago
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEngine.UI;
|
||
|
using UnityEngine;
|
||
|
using System;
|
||
|
using AX.MessageSystem;
|
||
|
|
||
|
/// <summary>
|
||
|
/// 假数据
|
||
|
/// </summary>
|
||
|
public class Arrie
|
||
|
{
|
||
|
public string name;
|
||
|
public Arrie(string name)
|
||
|
{
|
||
|
this.name = name;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
public class HorizontalTreeSet : MonoBehaviour
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// 水平结构展示
|
||
|
/// </summary>
|
||
|
//public List<Arrie> SaveList = new List<Arrie>();
|
||
|
public GameObject Item;
|
||
|
[HideInInspector]
|
||
|
public Transform father;
|
||
|
private Button AddTree;
|
||
|
private Button deletTree;
|
||
|
public static HorizontalTreeSet instance_;
|
||
|
private void Awake()
|
||
|
{
|
||
|
if (instance_==null)
|
||
|
{
|
||
|
instance_ = this;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void Start()
|
||
|
{
|
||
|
//假数据
|
||
|
//Arrie ar1 = new Arrie("一.第一个");
|
||
|
//SaveList.Add(ar1);
|
||
|
//Arrie ar2 = new Arrie("二.第二个");
|
||
|
//SaveList.Add(ar2);
|
||
|
//Arrie ar3 = new Arrie("三.第三个");
|
||
|
//SaveList.Add(ar3);
|
||
|
//Arrie ar4 = new Arrie("四.第四个");
|
||
|
//SaveList.Add(ar4);
|
||
|
//Arrie ar5 = new Arrie("五.第五个");
|
||
|
//SaveList.Add(ar5);
|
||
|
//Arrie ar6 = new Arrie("六.第六个");
|
||
|
//SaveList.Add(ar6);
|
||
|
//Arrie ar7 = new Arrie("七.第七个");
|
||
|
//SaveList.Add(ar7);
|
||
|
//Arrie ar8 = new Arrie("八.第八个");
|
||
|
//SaveList.Add(ar8);
|
||
|
//Arrie ar9 = new Arrie("九.第九个");
|
||
|
//SaveList.Add(ar9);
|
||
|
//Arrie ar10 = new Arrie("十.第十个");
|
||
|
//SaveList.Add(ar10);
|
||
|
//Arrie ar11 = new Arrie("十一.第十一个");
|
||
|
//SaveList.Add(ar11);
|
||
|
//Arrie ar12 = new Arrie("十二.第十二个");
|
||
|
//SaveList.Add(ar12);
|
||
|
|
||
|
//寻找物体
|
||
|
father = transform.Find("Group");
|
||
|
AddTree = transform.Find("AddTreeItem").GetComponent<Button>();
|
||
|
deletTree= transform.Find("DeletTreeItem").GetComponent<Button>();
|
||
|
AddTree.onClick.AddListener(AddTreeItem);
|
||
|
deletTree.onClick.AddListener(deletTreeItem);
|
||
|
CreateItem();
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 获取低图长度
|
||
|
/// </summary>
|
||
|
public float GetWidth()
|
||
|
{
|
||
|
return transform.Find("Image").GetComponent<RectTransform>().sizeDelta.x;
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 创建一级节点
|
||
|
/// </summary>
|
||
|
GameObject game;
|
||
|
public List<TreeViewData> SaveList = null;
|
||
|
public void CreateItem()
|
||
|
{
|
||
|
//生成先销毁子物体
|
||
|
foreach (Transform child in father)
|
||
|
{
|
||
|
Destroy(child.gameObject);
|
||
|
}
|
||
|
//生成数据
|
||
|
List<TreeViewData> datas = new List<TreeViewData>();
|
||
|
SaveList = new List<TreeViewData>();
|
||
|
NodeSet.Instance.GetAllDates(ref datas);
|
||
|
|
||
|
for (int i = 0; i < datas.Count; i++)
|
||
|
{
|
||
|
TreeViewData arr = datas[i] as TreeViewData;
|
||
|
if (arr.Hierarchy == 1)
|
||
|
{
|
||
|
SaveList.Add(arr);
|
||
|
}
|
||
|
}
|
||
|
//生成一级目录
|
||
|
|
||
|
for (int i = 0; i < SaveList.Count; i++)
|
||
|
{
|
||
|
|
||
|
TreeViewData arr = SaveList[i] as TreeViewData;
|
||
|
if (arr.Hierarchy == 1)
|
||
|
{
|
||
|
|
||
|
GameObject item = Instantiate(Item) as GameObject;
|
||
|
item.transform.parent = father;
|
||
|
item.transform.localScale = new Vector3(1, 1, 1);
|
||
|
item.transform.Find("Text").GetComponent<Text>().text = BigNumber((i + 1).ToString());
|
||
|
if (i == 0)
|
||
|
{
|
||
|
item.GetComponent<TreeOneLevel>().GetMessage(arr, true, BigNumber((i + 1).ToString()));
|
||
|
item.GetComponent<Toggle>().isOn = true;
|
||
|
item.transform.Find("Text").GetComponent<Text>().text = "一."+arr.Name;
|
||
|
NodeSecondLevelControl.Instance.GenerateNodeAccordingFirstLevelID(arr.ID);
|
||
|
}
|
||
|
item.GetComponent<TreeOneLevel>().GetMessage(arr, false, BigNumber((i + 1).ToString()));
|
||
|
item.GetComponent<Toggle>().group = father.GetComponent<ToggleGroup>();
|
||
|
CreateOperation(i, item);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 数字转换
|
||
|
/// </summary>
|
||
|
/// <returns></returns>
|
||
|
public string BigNumber(string Num)
|
||
|
{
|
||
|
string Number = "";
|
||
|
int result = 0;
|
||
|
bool text = int.TryParse(Num,out result);
|
||
|
if (text)
|
||
|
{
|
||
|
switch (Num)
|
||
|
{
|
||
|
case "1": Number = "一"; break;
|
||
|
case "2": Number = "二"; break;
|
||
|
case "3": Number = "三"; break;
|
||
|
case "4": Number = "四"; break;
|
||
|
case "5": Number = "五"; break;
|
||
|
case "6": Number = "六"; break;
|
||
|
case "7": Number = "七"; break;
|
||
|
case "8": Number = "八"; break;
|
||
|
case "9": Number = "九"; break;
|
||
|
case "10": Number = "十"; break;
|
||
|
case "11": Number = "十一"; break;
|
||
|
case "12": Number = "十二"; break;
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
switch (Num)
|
||
|
{
|
||
|
case "一": Number = "1"; break;
|
||
|
case "二": Number = "2"; break;
|
||
|
case "三": Number = "3"; break;
|
||
|
case "四": Number = "4"; break;
|
||
|
case "五": Number = "5"; break;
|
||
|
case "六": Number = "6"; break;
|
||
|
case "七": Number = "7"; break;
|
||
|
case "八": Number = "8"; break;
|
||
|
case "九": Number = "9"; break;
|
||
|
case "十": Number = "10"; break;
|
||
|
case "十一": Number = "11"; break;
|
||
|
case "十二": Number = "12"; break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return Number;
|
||
|
}
|
||
|
public void CreateOperation(int i,GameObject item)
|
||
|
{
|
||
|
float imagewith = GetWidth();//获取空间的长度
|
||
|
float every = imagewith / SaveList.Count;//计算每一段的长度
|
||
|
|
||
|
//当数组长度大于4固定第一条的长度
|
||
|
if (SaveList.Count > 4)
|
||
|
{
|
||
|
every = imagewith / 4;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
every = imagewith / SaveList.Count;
|
||
|
}
|
||
|
//特殊生成第一条数据的长度
|
||
|
if (i == 0)
|
||
|
{
|
||
|
if (SaveList.Count > 2)//当大于二的时候正常
|
||
|
{
|
||
|
item.GetComponent<RectTransform>().sizeDelta = new Vector2(every * 2.5f, 49);
|
||
|
float temp = item.GetComponent<RectTransform>().sizeDelta.x / 2;
|
||
|
item.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(temp * (i + 1) + (i * temp), 38);
|
||
|
game = item;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (SaveList.Count == 1)//当等于一的时候铺面空间
|
||
|
{
|
||
|
item.GetComponent<RectTransform>().sizeDelta = new Vector2(imagewith, 49);
|
||
|
float temp = item.GetComponent<RectTransform>().sizeDelta.x / 2;
|
||
|
item.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(temp * (i + 1) + (i * temp), 38);
|
||
|
}
|
||
|
else//当等于二的时候重新规定第一条在空间中的比例
|
||
|
{
|
||
|
item.GetComponent<RectTransform>().sizeDelta = new Vector2(every * 1.8f, 49);
|
||
|
float temp = item.GetComponent<RectTransform>().sizeDelta.x / 2;
|
||
|
item.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(temp * (i + 1) + (i * temp), 38);
|
||
|
game = item;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
item.GetComponent<RectTransform>().sizeDelta = new Vector2((imagewith - game.GetComponent<RectTransform>().sizeDelta.x) / (SaveList.Count - 1), 49);
|
||
|
float temp = game.GetComponent<RectTransform>().sizeDelta.x / 2;
|
||
|
item.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(temp * 2 + (item.GetComponent<RectTransform>().sizeDelta.x) / 2 + item.GetComponent<RectTransform>().sizeDelta.x * (i - 1), 38);
|
||
|
}
|
||
|
}//生成初始计算位置
|
||
|
/// <summary>
|
||
|
/// 点击一级节点计算
|
||
|
/// </summary>
|
||
|
float MaxSize;//记录最大的宽度
|
||
|
float minSize;//记录最小的宽度
|
||
|
#region // 相关操作
|
||
|
public void CheckSize()//检查最大最小值
|
||
|
{
|
||
|
foreach (Transform child in father)
|
||
|
{
|
||
|
if (child.GetComponent<RectTransform>().sizeDelta.x>400f)
|
||
|
{
|
||
|
MaxSize = child.GetComponent<RectTransform>().sizeDelta.x;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
minSize = child.GetComponent<RectTransform>().sizeDelta.x;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
public virtual void Operation(GameObject TreeGame)
|
||
|
{
|
||
|
CheckSize();
|
||
|
//计算大小
|
||
|
TreeGame.transform.GetComponent<RectTransform>().sizeDelta = new Vector2(MaxSize, 49);
|
||
|
foreach (Transform child in father)
|
||
|
{
|
||
|
if (!child.GetComponent<TreeOneLevel>().Max)
|
||
|
{
|
||
|
child.transform.GetComponent<RectTransform>().sizeDelta = new Vector2(minSize, 49);
|
||
|
}
|
||
|
}
|
||
|
//计算位置
|
||
|
List<GameObject> treeList = new List<GameObject>();
|
||
|
foreach (Transform child in father)
|
||
|
{
|
||
|
treeList.Add(child.gameObject);
|
||
|
}
|
||
|
float sizeDeltax = 0;
|
||
|
for (int i = 0; i < treeList.Count; i++)
|
||
|
{
|
||
|
GameObject obj = treeList[i] as GameObject;
|
||
|
|
||
|
float temp = obj.GetComponent<RectTransform>().sizeDelta.x / 2;
|
||
|
if (i == 0)
|
||
|
{
|
||
|
obj.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(temp, 38);
|
||
|
sizeDeltax += temp*2;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
|
||
|
obj.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(sizeDeltax+ temp, 38);
|
||
|
sizeDeltax += temp * 2;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
public virtual void Operation(GameObject TreeGame,GameObject game)
|
||
|
{
|
||
|
}
|
||
|
#endregion
|
||
|
|
||
|
/// <summary>
|
||
|
/// 新建一级节点
|
||
|
/// </summary>
|
||
|
public int Num = 0;
|
||
|
public void AddTreeItem()
|
||
|
{
|
||
|
GameObject inputwindow = Instantiate(Resources.Load<GameObject>("Prefabs/UI/InputWindow"));
|
||
|
inputwindow.GetComponent<InputWindowManager>().SetWindow("信息编辑", AddOKFunc, null);
|
||
|
inputwindow.name = "TheInputWindow";
|
||
|
|
||
|
if (SaveList.Count >=12)
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"一级节点已满");
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
private void AddOKFunc()
|
||
|
{
|
||
|
var window = GameObject.Find("TheInputWindow");
|
||
|
var inputStr = window.transform.Find("InputField").GetComponent<InputField>().text;
|
||
|
if (inputStr == "")
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"请输入名称");
|
||
|
return;
|
||
|
}
|
||
|
DoSomething dothing = new DoSomething(this);
|
||
|
if (dothing.CheckName(inputStr))
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"已经有此名字");
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
TreeViewData data = new TreeViewData();
|
||
|
data.Name = inputStr;
|
||
|
data.ID = NodeSet.Instance.GetNextID();
|
||
|
data.ParentID = 0;
|
||
|
data.Hierarchy =1;
|
||
|
|
||
|
Destroy(window.gameObject);
|
||
|
|
||
|
if (father.childCount == 0)
|
||
|
{
|
||
|
Num++;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
Num = int.Parse(father.transform.GetChild(father.childCount - 1).GetComponent<TreeOneLevel>().ShowNum) + 1;
|
||
|
}
|
||
|
GameObject item = Instantiate(Item) as GameObject;
|
||
|
item.transform.parent = father;
|
||
|
item.transform.localScale = new Vector3(1, 1, 1);
|
||
|
item.GetComponent<TreeOneLevel>().GetMessage(data, false, BigNumber(Num.ToString()));
|
||
|
item.GetComponent<TreeOneLevel>().SetNumber(BigNumber(Num.ToString()));
|
||
|
item.GetComponent<Toggle>().group = father.GetComponent<ToggleGroup>();
|
||
|
dothing.Operation(item);
|
||
|
NodeSet.Instance.ADDXml(inputStr, data);
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 删除一级节点
|
||
|
/// </summary>
|
||
|
public void deletTreeItem()
|
||
|
{
|
||
|
DoSomething dothing = new DoSomething(this);
|
||
|
GameObject obj = dothing.CheckToggle();
|
||
|
if (obj != null)
|
||
|
{
|
||
|
SaveList.Remove(obj.GetComponent<TreeOneLevel>().arrie);
|
||
|
int Index = obj.transform.GetSiblingIndex();
|
||
|
Destroy(obj);
|
||
|
GameObject NewToggle= SetToggle(Index);
|
||
|
if (NewToggle != null)
|
||
|
{
|
||
|
NewToggle.GetComponent<Toggle>().isOn = true;
|
||
|
|
||
|
dothing.Operation(NewToggle, obj);
|
||
|
SetNumber(obj);
|
||
|
NewToggle.GetComponent<TreeOneLevel>().DeleteSetNumber();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
public GameObject SetToggle(int Index)//前面有物体返回前面,没有则返回后面的物体
|
||
|
{
|
||
|
foreach (Transform child in father)
|
||
|
{
|
||
|
if (child.GetSiblingIndex()+1==Index)
|
||
|
{
|
||
|
return child.gameObject;
|
||
|
}
|
||
|
if (child.GetSiblingIndex() - 1 == Index)
|
||
|
{
|
||
|
return child.gameObject;
|
||
|
}
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
public void SetNumber(GameObject NewToggle)//重新排序名号
|
||
|
{
|
||
|
DoSomething dothing = new DoSomething(this);
|
||
|
List<GameObject> List = dothing.ReturnList();
|
||
|
for (int i = 0; i < List.Count; i++)
|
||
|
{
|
||
|
GameObject obj = List[i] as GameObject;
|
||
|
if (int.Parse(BigNumber(obj.GetComponent<TreeOneLevel>().ShowNum)) > int.Parse(BigNumber(NewToggle.GetComponent<TreeOneLevel>().ShowNum)))
|
||
|
{
|
||
|
int Num = int.Parse(BigNumber(obj.GetComponent<TreeOneLevel>().ShowNum));
|
||
|
obj.GetComponent<TreeOneLevel>().SetNumber(BigNumber((Num - 1).ToString()));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/// <summary>
|
||
|
/// 获取选中的ID
|
||
|
/// </summary>
|
||
|
/// <returns></returns>
|
||
|
public int GetID()
|
||
|
{
|
||
|
DoSomething dothing = new DoSomething(this);
|
||
|
return dothing.GetCurID();
|
||
|
}
|
||
|
|
||
|
public GameObject GetChoseToggle(int i)//用于切换下一个节点
|
||
|
{
|
||
|
foreach (Transform child in father)
|
||
|
{
|
||
|
if (child.GetComponent<Toggle>().isOn)
|
||
|
{
|
||
|
int num = child.GetSiblingIndex();
|
||
|
GameObject obj = father.GetChild(num + i).gameObject ;
|
||
|
if (obj != null)
|
||
|
{
|
||
|
obj.GetComponent<Toggle>().isOn = true;
|
||
|
}
|
||
|
return obj;
|
||
|
}
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
public class DoSomething : HorizontalTreeSet
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// 检查勾选物体 添加节点
|
||
|
/// </summary>
|
||
|
/// <returns></returns>
|
||
|
HorizontalTreeSet horizontal;
|
||
|
public DoSomething(HorizontalTreeSet horizontal)
|
||
|
{
|
||
|
this.horizontal = horizontal;
|
||
|
}
|
||
|
//获取选中的物体
|
||
|
public GameObject CheckToggle()
|
||
|
{
|
||
|
foreach (Transform child in horizontal.father)
|
||
|
{
|
||
|
if (child.GetComponent<Toggle>().isOn)
|
||
|
{
|
||
|
return child.gameObject;
|
||
|
}
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
//获取物体数组
|
||
|
public List<GameObject> ReturnList()
|
||
|
{
|
||
|
List<GameObject> List = new List<GameObject>();
|
||
|
foreach (Transform child in horizontal.father)
|
||
|
{
|
||
|
List.Add(child.gameObject);
|
||
|
}
|
||
|
return List;
|
||
|
}
|
||
|
//检查有没有相同名称
|
||
|
public bool CheckName(string Name)
|
||
|
{
|
||
|
for (int i = 0; i < horizontal.SaveList.Count; i++)
|
||
|
{
|
||
|
TreeViewData data = horizontal.SaveList[i] as TreeViewData;
|
||
|
if (data.Name.Equals(Name))
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
//返回选中的ID
|
||
|
public int GetCurID()
|
||
|
{
|
||
|
GameObject obj = CheckToggle();
|
||
|
if (obj)
|
||
|
{
|
||
|
return obj.GetComponent<TreeOneLevel>().arrie.ID;
|
||
|
}
|
||
|
return -1;
|
||
|
}
|
||
|
|
||
|
public override void Operation(GameObject TreeGame)//用于添加排序
|
||
|
{
|
||
|
horizontal.CheckSize();
|
||
|
//计算位置
|
||
|
List<GameObject> treeList = new List<GameObject>();
|
||
|
foreach (Transform child in horizontal.father)
|
||
|
{
|
||
|
treeList.Add(child.gameObject);
|
||
|
}
|
||
|
//当数组长度大于4固定第一条的长度
|
||
|
float imagewith = horizontal.GetWidth();//获取空间的长度
|
||
|
//float every = imagewith / SaveList.Count;//计算每一段的长度
|
||
|
float every;
|
||
|
//当数组长度大于4固定第一条的长度
|
||
|
if (horizontal.SaveList.Count > 4)
|
||
|
{
|
||
|
every = imagewith / 4;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
every = imagewith / horizontal.SaveList.Count;
|
||
|
}
|
||
|
if (treeList.Count == 1)
|
||
|
{
|
||
|
TreeGame.GetComponent<RectTransform>().sizeDelta = new Vector2(imagewith, 49);
|
||
|
float temp = TreeGame.GetComponent<RectTransform>().sizeDelta.x / 2;
|
||
|
TreeGame.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(temp, 38);
|
||
|
TreeGame.GetComponent<Toggle>().isOn = true;
|
||
|
return;
|
||
|
}
|
||
|
else if (treeList.Count == 2)
|
||
|
{
|
||
|
CheckToggle().GetComponent<RectTransform>().sizeDelta = new Vector2(every * 1.8f, 49);
|
||
|
float temp = TreeGame.GetComponent<RectTransform>().sizeDelta.x / 2;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
CheckToggle().GetComponent<RectTransform>().sizeDelta = new Vector2(every * 2.5f, 49);
|
||
|
}
|
||
|
treeList.Clear();
|
||
|
foreach (Transform child in horizontal.father)
|
||
|
{
|
||
|
treeList.Add(child.gameObject);
|
||
|
}
|
||
|
for (int i = 0; i < treeList.Count; i++)
|
||
|
{
|
||
|
GameObject item = treeList[i] as GameObject;
|
||
|
if (item != CheckToggle())
|
||
|
{
|
||
|
item.GetComponent<RectTransform>().sizeDelta = new Vector2((imagewith - CheckToggle().GetComponent<RectTransform>().sizeDelta.x) / (treeList.Count - 1), 49);
|
||
|
}
|
||
|
}
|
||
|
float sizeDeltax = 0;
|
||
|
for (int i = 0; i < treeList.Count; i++)
|
||
|
{
|
||
|
GameObject obj = treeList[i] as GameObject;
|
||
|
|
||
|
float temp = obj.GetComponent<RectTransform>().sizeDelta.x / 2;
|
||
|
if (i == 0)
|
||
|
{
|
||
|
obj.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(temp, 38);
|
||
|
sizeDeltax += temp * 2;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
|
||
|
obj.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(sizeDeltax + temp, 38);
|
||
|
sizeDeltax += temp * 2;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public override void Operation(GameObject TreeGame,GameObject game) //重载用于删除排序
|
||
|
{
|
||
|
horizontal.CheckSize();
|
||
|
//计算位置
|
||
|
List<GameObject> treeList = new List<GameObject>();
|
||
|
foreach (Transform child in horizontal.father)
|
||
|
{
|
||
|
treeList.Add(child.gameObject);
|
||
|
}
|
||
|
treeList.Remove(game);
|
||
|
//当数组长度大于4固定第一条的长度
|
||
|
float imagewith = horizontal.GetWidth();//获取空间的长度
|
||
|
//float every = imagewith / SaveList.Count;//计算每一段的长度
|
||
|
float every;
|
||
|
//当数组长度大于4固定第一条的长度
|
||
|
if (treeList.Count > 4)
|
||
|
{
|
||
|
every = imagewith / 4;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
every = imagewith / treeList.Count;
|
||
|
}
|
||
|
|
||
|
treeList.Clear();
|
||
|
foreach (Transform child in horizontal.father)
|
||
|
{
|
||
|
treeList.Add(child.gameObject);
|
||
|
}
|
||
|
treeList.Remove(game);
|
||
|
|
||
|
if (treeList.Count == 1)
|
||
|
{
|
||
|
TreeGame.GetComponent<RectTransform>().sizeDelta = new Vector2(imagewith, 49);
|
||
|
float temp = TreeGame.GetComponent<RectTransform>().sizeDelta.x / 2;
|
||
|
TreeGame.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(temp, 38);
|
||
|
TreeGame.GetComponent<Toggle>().isOn = true;
|
||
|
return;
|
||
|
}
|
||
|
else if (treeList.Count == 2)
|
||
|
{
|
||
|
TreeGame.GetComponent<RectTransform>().sizeDelta = new Vector2(every * 1.8f, 49);
|
||
|
float temp = TreeGame.GetComponent<RectTransform>().sizeDelta.x / 2;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
TreeGame.GetComponent<RectTransform>().sizeDelta = new Vector2(every * 2.5f, 49);
|
||
|
}
|
||
|
|
||
|
|
||
|
for (int i = 0; i < treeList.Count; i++)
|
||
|
{
|
||
|
GameObject item = treeList[i] as GameObject;
|
||
|
if (item != TreeGame)
|
||
|
{
|
||
|
item.GetComponent<RectTransform>().sizeDelta = new Vector2((imagewith - TreeGame.GetComponent<RectTransform>().sizeDelta.x) / (treeList.Count - 1), 49);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
float sizeDeltax = 0;
|
||
|
for (int i = 0; i < treeList.Count; i++)
|
||
|
{
|
||
|
GameObject obj = treeList[i] as GameObject;
|
||
|
|
||
|
float temp = obj.GetComponent<RectTransform>().sizeDelta.x / 2;
|
||
|
if (i == 0)
|
||
|
{
|
||
|
obj.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(temp, 38);
|
||
|
sizeDeltax += temp * 2;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
|
||
|
obj.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(sizeDeltax + temp, 38);
|
||
|
sizeDeltax += temp * 2;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|