This commit is contained in:
lq 2024-12-02 00:35:53 +08:00
parent ffffa196a4
commit fb60729d67
5 changed files with 44 additions and 26 deletions

View File

@ -1588,6 +1588,14 @@ PrefabInstance:
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1373529961119931373, guid: 26d5710936f5f7d468eb5eb9da96112e, type: 3}
propertyPath: m_FontData.m_Alignment
value: 3
objectReference: {fileID: 0}
- target: {fileID: 1373529961119931373, guid: 26d5710936f5f7d468eb5eb9da96112e, type: 3}
propertyPath: m_FontData.m_VerticalOverflow
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1373529961381015436, guid: 26d5710936f5f7d468eb5eb9da96112e, type: 3}
propertyPath: m_SizeDelta.x
value: 267.551
@ -2113,6 +2121,7 @@ MonoBehaviour:
scenePanelPrefab: {fileID: 6740850324693622957, guid: a15ee694d5f79864d816998fae77116d, type: 3}
peopleWindowsPrefab: {fileID: 7318934474885050405}
personnelPanel: {fileID: 5900002971020626571, guid: 297444ab6ae692b4dbcb38d34e0c5716, type: 3}
jsonReader: {fileID: 0}
sceneText: {fileID: 0}
scrollRect: {fileID: 1435623615}
panelInfo: {fileID: 618256462}
@ -2241,9 +2250,11 @@ MonoBehaviour:
name:
duty:
scene:
peopleList: []
managerPanel1: {fileID: 617308873}
jsonReader1: {fileID: 1417128757}
selectScenePanel: {fileID: 1138062886}
datePanel: {fileID: 468742199}
--- !u!1 &625672672
GameObject:
m_ObjectHideFlags: 0
@ -8754,6 +8765,7 @@ MonoBehaviour:
matialJsonFile: {fileID: 4900000, guid: d98cb351d1a87dc4887a37106b9745d4, type: 3}
sceneJsonFile: {fileID: 4900000, guid: 06c09fd1c8b0a0a45951a1065189d922, type: 3}
incidentSiteJosnFile: {fileID: 4900000, guid: 1efa4372b10d4294199638c49173ff4c, type: 3}
NPCJosnFile: {fileID: 4900000, guid: 41009f009f0718647a782c7e1aec97dd, type: 3}
--- !u!4 &1417128758
Transform:
m_ObjectHideFlags: 0

View File

@ -50,7 +50,7 @@ public class Panel : MonoBehaviour
[Header("数据")]
public string name, duty, scene;
private List<GameObject> peopleList = new List<GameObject>(); // 存储所有已加载的人员预制体
public List<GameObject> peopleList = new List<GameObject>(); // 存储所有已加载的人员预制体
private List<GameObject> filteredPeopleList = new List<GameObject>(); // 存储筛选后的人员列表
private GameObject selectedPerson = null; // 当前选中的角色
public SelectedInfo selectedInfo;
@ -58,6 +58,7 @@ public class Panel : MonoBehaviour
public ManagerPanel managerPanel1;
public JSONReader jsonReader1;
public SelectScenePanel selectScenePanel;
public DatePanel datePanel;
private bool isPersonSelected = false; // 标志是否选择了人员
private bool isDutySelected = false; // 标志是否选择了职责
private bool isSceneSelected = false; // 标志是否选择了场景
@ -145,46 +146,41 @@ public class Panel : MonoBehaviour
bool shouldInstantiate = true; // 用于判断是否需要实例化
foreach (string section in roleLimitSections)
{
string[] roleLimits = section.Split(',');
// 判断当前部分是否包含 "-1" 来决定是否跳过实例化
if (section.Contains("-1"))
{
// 判断职业ID或其他条件决定是否跳过
string[] roleLimits = section.Split(',');
// 这里假设职业ID在第一个位置且为-1时表示不可作为出生点
if (roleLimits[0] == "-1")
{
//Debug.Log("该职业不能作为出生点,不在预订演练,跳过实例化!");
shouldInstantiate = false; // 不实例化该NPC
break; // 跳出循环直接处理下一个NPC
}
// 处理“-1”表示无限制人数的情况
if (roleLimits[2] == "-1")
{
//Debug.Log("角色限制为-1区域限制人数为无限");
// 可以选择设置limitNum为无限制
}
}
else
{
// 实例化NPC预制体
GameObject item = GameObject.Instantiate<GameObject>(scenePrefab, sceneCount);
SceneItem sceneItem = item.GetComponent<SceneItem>();
// 设置limitNum
sceneItem.dutyId = int.Parse(roleLimits[1]);
sceneItem.limitNum = int.Parse(roleLimits[2]);
sceneItem.sceneName.text = npcData.Value.Note;
// 将每个实例化的角色添加到列表中
peopleList.Add(item);
}
}
// 如果不满足实例化条件跳过当前NPC的实例化
if (!shouldInstantiate)
{
continue;
}
}
// 实例化NPC预制体
GameObject item = GameObject.Instantiate<GameObject>(scenePrefab, sceneCount);
SceneItem sceneItem = item.GetComponent<SceneItem>();
sceneItem.sceneName.text = npcData.Value.Note;
// 将每个实例化的角色添加到列表中
peopleList.Add(item);
}
}
//=============================================================按钮和点击事件==================================================
//处理人员管理按钮
public void ClickPersonnelManagement()
@ -226,7 +222,6 @@ public class Panel : MonoBehaviour
// 获取当前场景中的所有人员信息
List<SelectedInfo> currentSceneInfo = sceneDataDictionary[sceneName];
// 如果选中了“主持人”、“各组长”或“总指挥”则限制数量为1
if (selectedInfo.duty == "主持人" || selectedInfo.duty == "组长" || selectedInfo.duty == "总指挥")
{
@ -269,7 +264,7 @@ public class Panel : MonoBehaviour
{
Debug.LogError("请确保选择了人员、职责和场景!");
}
datePanel.NumberText.text ="共"+(sceneDataDictionary.Keys.Count * sceneDataDictionary.Values.Count).ToString()+"人参与";
// 可以在这里根据需求继续处理选中的数据
}

View File

@ -14,6 +14,7 @@ public class ManagerPanel : MonoBehaviour
public GameObject scenePanelPrefab;
public GameObject peopleWindowsPrefab;//人员弹窗
public GameObject personnelPanel;//不包含职责的区域信息面板
public JSONReader jsonReader;
[Header("组件")]
@ -122,9 +123,18 @@ public class ManagerPanel : MonoBehaviour
{
GameObject managerPanelInstance = Instantiate(personnelPanel, personnelPanelCount);
PersonnelPanel scenetext = managerPanelInstance.GetComponent<PersonnelPanel>();
foreach(var item in panelInfo.peopleList)
scenetext.personelPanelText.text = sceneEntry.Key;
scenetext.personelNumText.text = sceneEntry.Value.Count.ToString();
scenetext.CreatePeopleItem(sceneEntry.Value);
//foreach (var item in panelInfo.peopleList)
//{
// SceneItem sceneItem = item.GetComponent<SceneItem>();
// if(sceneItem.sceneName.text== scenetext.personelPanelText.text)
// {
// if(sceneEntry.Value.duty==)
// }
//}
scenetext.CreatePeopleItem(sceneEntry.Value);
}
//CreatePeopleItem();
}

View File

@ -209,7 +209,7 @@ public class SelectScenePanel : MonoBehaviour
Toggle toggle = slot.GetComponent<Toggle>();
if (toggle != null)
{
toggle.group = eventGroup;
toggle.group = sceneGroup;
//toggleList.Add(toggle);
sceneItemList.Add(item);
}

View File

@ -13,6 +13,7 @@ public class SceneItem : MonoBehaviour
public Image maskImage;
public string roleLimit;//场景限制条件
public int limitNum;//限制人数
public int dutyId;
public JSONReader jsonReader;
public bool IsOpen { get; set; } = true;
// Start is called before the first frame update