完善菜单功能
This commit is contained in:
parent
178e12968e
commit
ca82f68f37
@ -3,6 +3,7 @@ using UnityEngine.UI;
|
|||||||
using XMLTool;
|
using XMLTool;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using TMPro;
|
using TMPro;
|
||||||
|
using UnityEditor.Hardware;
|
||||||
|
|
||||||
namespace QFramework.Example
|
namespace QFramework.Example
|
||||||
{
|
{
|
||||||
@ -48,7 +49,7 @@ namespace QFramework.Example
|
|||||||
switch (status)
|
switch (status)
|
||||||
{
|
{
|
||||||
case ObjToggleStatus.None:
|
case ObjToggleStatus.None:
|
||||||
Utility.FindObj(body.Path).gameObject.SetActive(false);
|
CheckActive();
|
||||||
foreach (var sub in body.subBody)
|
foreach (var sub in body.subBody)
|
||||||
{
|
{
|
||||||
if (objBtnDataMap.ContainsKey(sub.Value))
|
if (objBtnDataMap.ContainsKey(sub.Value))
|
||||||
@ -56,11 +57,14 @@ namespace QFramework.Example
|
|||||||
objBtnDataMap[sub.Value].SetStatus(status);
|
objBtnDataMap[sub.Value].SetStatus(status);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
SetUpStatus(body, true);
|
||||||
break;
|
break;
|
||||||
case ObjToggleStatus.Half:
|
case ObjToggleStatus.Half:
|
||||||
|
CheckActive();
|
||||||
|
SetUpStatus(body, false);
|
||||||
break;
|
break;
|
||||||
case ObjToggleStatus.Full:
|
case ObjToggleStatus.Full:
|
||||||
Utility.FindObj(body.Path).gameObject.SetActive(true);
|
CheckActive();
|
||||||
foreach (var sub in body.subBody)
|
foreach (var sub in body.subBody)
|
||||||
{
|
{
|
||||||
if (objBtnDataMap.ContainsKey(sub.Value))
|
if (objBtnDataMap.ContainsKey(sub.Value))
|
||||||
@ -68,35 +72,100 @@ namespace QFramework.Example
|
|||||||
objBtnDataMap[sub.Value].SetStatus(status);
|
objBtnDataMap[sub.Value].SetStatus(status);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
SetUpStatus(body, true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SetUpStatus(body.parent);
|
|
||||||
|
|
||||||
RefreshUI();
|
RefreshUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetUpStatus(Body3D.Body body)
|
public void CheckActive()
|
||||||
{
|
{
|
||||||
//if (body != null)
|
switch (status)
|
||||||
//{
|
{
|
||||||
// foreach (var sub in body.subBody)
|
case ObjToggleStatus.None:
|
||||||
// {
|
Utility.FindObj(body.Path).SetActive(false);
|
||||||
// if (objBtnDataMap.ContainsKey(sub.Value))
|
break;
|
||||||
// {
|
case ObjToggleStatus.Half:
|
||||||
// objBtnDataMap[sub.Value]
|
case ObjToggleStatus.Full:
|
||||||
// }
|
Utility.FindObj(body.Path).SetActive(true);
|
||||||
// }
|
break;
|
||||||
//}
|
}
|
||||||
//if (objBtnDataMap.ContainsKey(body))
|
}
|
||||||
//{
|
|
||||||
// objBtnDataMap[body].SetStatus(this.status);
|
|
||||||
//}
|
public void RefreshParent(ObjToggleStatus status)
|
||||||
//if (body.parent != null)
|
{
|
||||||
//{
|
this.status = status;
|
||||||
// SetUpStatus(body.parent);
|
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