完善菜单功能
This commit is contained in:
parent
178e12968e
commit
ca82f68f37
@ -3,6 +3,7 @@ using UnityEngine.UI;
|
||||
using XMLTool;
|
||||
using System.Collections.Generic;
|
||||
using TMPro;
|
||||
using UnityEditor.Hardware;
|
||||
|
||||
namespace QFramework.Example
|
||||
{
|
||||
@ -48,7 +49,7 @@ namespace QFramework.Example
|
||||
switch (status)
|
||||
{
|
||||
case ObjToggleStatus.None:
|
||||
Utility.FindObj(body.Path).gameObject.SetActive(false);
|
||||
CheckActive();
|
||||
foreach (var sub in body.subBody)
|
||||
{
|
||||
if (objBtnDataMap.ContainsKey(sub.Value))
|
||||
@ -56,11 +57,14 @@ namespace QFramework.Example
|
||||
objBtnDataMap[sub.Value].SetStatus(status);
|
||||
}
|
||||
}
|
||||
SetUpStatus(body, true);
|
||||
break;
|
||||
case ObjToggleStatus.Half:
|
||||
CheckActive();
|
||||
SetUpStatus(body, false);
|
||||
break;
|
||||
case ObjToggleStatus.Full:
|
||||
Utility.FindObj(body.Path).gameObject.SetActive(true);
|
||||
CheckActive();
|
||||
foreach (var sub in body.subBody)
|
||||
{
|
||||
if (objBtnDataMap.ContainsKey(sub.Value))
|
||||
@ -68,35 +72,100 @@ namespace QFramework.Example
|
||||
objBtnDataMap[sub.Value].SetStatus(status);
|
||||
}
|
||||
}
|
||||
SetUpStatus(body, true);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
SetUpStatus(body.parent);
|
||||
|
||||
RefreshUI();
|
||||
}
|
||||
|
||||
public void SetUpStatus(Body3D.Body body)
|
||||
public void CheckActive()
|
||||
{
|
||||
//if (body != null)
|
||||
//{
|
||||
// foreach (var sub in body.subBody)
|
||||
// {
|
||||
// if (objBtnDataMap.ContainsKey(sub.Value))
|
||||
// {
|
||||
// objBtnDataMap[sub.Value]
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
//if (objBtnDataMap.ContainsKey(body))
|
||||
//{
|
||||
// objBtnDataMap[body].SetStatus(this.status);
|
||||
//}
|
||||
//if (body.parent != null)
|
||||
//{
|
||||
// SetUpStatus(body.parent);
|
||||
//}
|
||||
switch (status)
|
||||
{
|
||||
case ObjToggleStatus.None:
|
||||
Utility.FindObj(body.Path).SetActive(false);
|
||||
break;
|
||||
case ObjToggleStatus.Half:
|
||||
case ObjToggleStatus.Full:
|
||||
Utility.FindObj(body.Path).SetActive(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void RefreshParent(ObjToggleStatus status)
|
||||
{
|
||||
this.status = status;
|
||||
CheckActive();
|
||||
RefreshUI();
|
||||
}
|
||||
|
||||
public void SetUpStatus(Body3D.Body body, bool needCheck)
|
||||
{
|
||||
var parent = body.parent;
|
||||
if (parent != null && objBtnDataMap.ContainsKey(parent))
|
||||
{
|
||||
if (needCheck)
|
||||
{
|
||||
bool allOn = true;
|
||||
bool allNone = true;
|
||||
|
||||
// 遍历 body 的子元素 subBody
|
||||
foreach (var sub in parent.subBody)
|
||||
{
|
||||
// 检查 objBtnDataMap 中是否包含当前子元素的值
|
||||
if (objBtnDataMap.ContainsKey(sub.Value))
|
||||
{
|
||||
// 获取当前子元素对应的按钮数据的状态
|
||||
var status = objBtnDataMap[sub.Value].status;
|
||||
// 如果当前子元素的状态不是 Full,说明不是所有子元素都是 Full 状态
|
||||
if (status != ObjToggleStatus.Full)
|
||||
{
|
||||
allOn = false;
|
||||
}
|
||||
// 如果当前子元素的状态不是 None,说明不是所有子元素都是 None 状态
|
||||
if (status != ObjToggleStatus.None)
|
||||
{
|
||||
allNone = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// 如果 objBtnDataMap 中不包含当前子元素的值,说明不是所有状态都符合要求
|
||||
allOn = false;
|
||||
allNone = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 如果所有子元素的状态都是 Full
|
||||
if (allOn)
|
||||
{
|
||||
// 将当前 body 的状态设置为 Full
|
||||
objBtnDataMap[parent].RefreshParent(ObjToggleStatus.Full);
|
||||
}
|
||||
// 如果所有子元素的状态都是 None
|
||||
else if (allNone)
|
||||
{
|
||||
// 将当前 body 的状态设置为 None
|
||||
objBtnDataMap[parent].RefreshParent(ObjToggleStatus.None);
|
||||
}
|
||||
else
|
||||
{
|
||||
objBtnDataMap[parent].RefreshParent(ObjToggleStatus.Half);
|
||||
}
|
||||
SetUpStatus(parent, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (objBtnDataMap.ContainsKey(parent))
|
||||
{
|
||||
objBtnDataMap[parent].SetStatus(ObjToggleStatus.Half);
|
||||
SetUpStatus(parent, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user