diff --git a/Assets/Scenes/Songs_Select.unity b/Assets/Scenes/Songs_Select.unity index a357c97a..c46d405b 100644 --- a/Assets/Scenes/Songs_Select.unity +++ b/Assets/Scenes/Songs_Select.unity @@ -335,7 +335,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!224 &16906197 RectTransform: m_ObjectHideFlags: 0 @@ -1615,10 +1615,10 @@ RectTransform: - {fileID: 960238621} m_Father: {fileID: 1704085229} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 276, y: -366} - m_SizeDelta: {x: 180, y: 240} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &190161137 GameObject: @@ -1968,10 +1968,10 @@ RectTransform: - {fileID: 1400477542} m_Father: {fileID: 1704085229} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 94, y: -366} - m_SizeDelta: {x: 180, y: 240} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &269656317 GameObject: @@ -2470,10 +2470,10 @@ RectTransform: - {fileID: 269656318} m_Father: {fileID: 1704085229} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 458, y: -124} - m_SizeDelta: {x: 180, y: 240} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &323084114 GameObject: @@ -8655,7 +8655,19 @@ MonoBehaviour: m_TargetGraphic: {fileID: 888783199} m_OnClick: m_PersistentCalls: - m_Calls: [] + m_Calls: + - m_Target: {fileID: 827262133} + m_TargetAssemblyTypeName: teamSettingPanel, Assembly-CSharp + m_MethodName: downChangeCharcterIndex + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 --- !u!114 &888783199 MonoBehaviour: m_ObjectHideFlags: 0 @@ -9324,10 +9336,10 @@ RectTransform: - {fileID: 341481672} m_Father: {fileID: 1704085229} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 276, y: -124} - m_SizeDelta: {x: 180, y: 240} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &928623233 GameObject: @@ -12963,7 +12975,19 @@ MonoBehaviour: m_TargetGraphic: {fileID: 1387409702} m_OnClick: m_PersistentCalls: - m_Calls: [] + m_Calls: + - m_Target: {fileID: 827262133} + m_TargetAssemblyTypeName: teamSettingPanel, Assembly-CSharp + m_MethodName: upChangeCharcterIndex + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 --- !u!114 &1387409702 MonoBehaviour: m_ObjectHideFlags: 0 @@ -13373,10 +13397,10 @@ RectTransform: - {fileID: 1224014391} m_Father: {fileID: 1704085229} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 458, y: -366} - m_SizeDelta: {x: 180, y: 240} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1466300096 GameObject: @@ -16060,7 +16084,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 0, y: 0.00082605326} - m_SizeDelta: {x: -0.000061035, y: 486} + m_SizeDelta: {x: -0.000061035, y: 0} m_Pivot: {x: 0, y: 1} --- !u!114 &1704085230 MonoBehaviour: @@ -18528,10 +18552,10 @@ RectTransform: - {fileID: 1005912080} m_Father: {fileID: 1704085229} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 94, y: -124} - m_SizeDelta: {x: 180, y: 240} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1987921078 GameObject: diff --git a/Assets/scripts/Songs_Select/teamCharacterView.cs b/Assets/scripts/Songs_Select/teamCharacterView.cs new file mode 100644 index 00000000..0f581b5c --- /dev/null +++ b/Assets/scripts/Songs_Select/teamCharacterView.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +//适用于编队 列表 +public class teamCharacterView : MonoBehaviour +{ + public GameObject character; + public GameObject controlButton; + public bool isSelected =false; + public int listIndex; + // private TeamManager teamManager= TeamManager.Instance; + + void Start() + { + controlButton.SetActive(isSelected); + Debug.Log("teamCharacterView Start,"+isSelected+","+listIndex); + } + /// + /// 单机team列表内对象时触发选定 + /// + public void SetSelected() + { + isSelected = true; + controlButton.SetActive(true); + TeamManager.Instance.setCurrentSelectedCharacterInTeam(listIndex); + } + public void SetUnSelected() + { + isSelected = false; + controlButton.SetActive(false); + if(TeamManager.Instance.currentSelectedCharacter==this.listIndex) + TeamManager.Instance.setCurrentSelectedCharacterInTeam(-1); + } +} diff --git a/Assets/scripts/Songs_Select/teamCharacterView.cs.meta b/Assets/scripts/Songs_Select/teamCharacterView.cs.meta new file mode 100644 index 00000000..4f12d346 --- /dev/null +++ b/Assets/scripts/Songs_Select/teamCharacterView.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5fe33ff09d0ea4848ac88809df94dbc8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/scripts/Songs_Select/teamSettingPanel.cs b/Assets/scripts/Songs_Select/teamSettingPanel.cs index c3b3fdd6..dafdb42b 100644 --- a/Assets/scripts/Songs_Select/teamSettingPanel.cs +++ b/Assets/scripts/Songs_Select/teamSettingPanel.cs @@ -11,14 +11,47 @@ public class teamSettingPanel : MonoBehaviour [SerializeField] public GameObject[] teamCharactersObj; + private TeamManager teamManager; + + public static teamSettingPanel Instance{get;private set;} + + void Awake() + { + if (Instance == null) + { + Instance = this; + } + else + { + Destroy(gameObject); + } + } + void Start() { - // teamSettingPanelObj.SetActive(false); + teamManager = TeamManager.Instance; + if(teamManager!=null) + { + teamManager.OnSelectedCharacterChanged += updateTeamCharacterSelectedStatus; + } + } + void OnDestroy() + { + if (teamManager != null) + { + teamManager.OnSelectedCharacterChanged -= updateTeamCharacterSelectedStatus; + } } public void openTeamSettingPanel() { Debug.Log("打开编队设置面板"); - //todo:向编队管理类拉取已有编队信息,把视图初始化为对应的编队信息 + //todo:向teamManager拉取已有编队信息,把视图初始化为对应的编队信息 + List currentTeam = teamManager.getCurrentTeam(); + foreach (Character character in currentTeam) + { + + } + //根据获取的队伍信息处理ui组件 //可在此补充ui动画信息 teamSettingPanelObj.SetActive(true); } @@ -29,4 +62,35 @@ public class teamSettingPanel : MonoBehaviour //todo:向保存编队信息的类获取编队信息,然后重新处理teamElementsObj的信息 } + /// + /// 将当前角色向下交换位置 + /// + public void downChangeCharcterIndex() + { + + } + public void upChangeCharcterIndex() + { + + } + /// + /// 用于保证team内对象的选中状态一致 + /// + public void updateTeamCharacterSelectedStatus() + { + int currentSelectedCharacter = teamManager.currentSelectedCharacter; + Debug.Log(currentSelectedCharacter+" "+$"{teamElementsObj.Length}"); + for (int i = 0; i < teamElementsObj.Length; i++) + { + if (i != currentSelectedCharacter) + { + teamCharacterView teamCharacterView = teamElementsObj[i].GetComponent(); + if(teamCharacterView!=null) + { + teamCharacterView.SetUnSelected(); + } + } + } + } + } diff --git a/Assets/scripts/gamePlay_gameplay/Team/Character.cs b/Assets/scripts/gamePlay_gameplay/Team/Character.cs new file mode 100644 index 00000000..ef5299c2 --- /dev/null +++ b/Assets/scripts/gamePlay_gameplay/Team/Character.cs @@ -0,0 +1,10 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Character +{ + public string name{get; set;} + public string occupation{get; set;} + public int boundaryLevel{get; set;} +} diff --git a/Assets/scripts/gamePlay_gameplay/Team/Character.cs.meta b/Assets/scripts/gamePlay_gameplay/Team/Character.cs.meta new file mode 100644 index 00000000..6d1c4433 --- /dev/null +++ b/Assets/scripts/gamePlay_gameplay/Team/Character.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bae42af9bcfec5f46a3025f40ce5bd7b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/scripts/gamePlay_gameplay/Team/TeamManager.cs b/Assets/scripts/gamePlay_gameplay/Team/TeamManager.cs new file mode 100644 index 00000000..589933a3 --- /dev/null +++ b/Assets/scripts/gamePlay_gameplay/Team/TeamManager.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class TeamManager : MonoBehaviour +{ + public static TeamManager Instance {get; private set;} + + public teamSettingPanel teamSettingPanelInstance= teamSettingPanel.Instance; + //当前玩家存档下的所有编队配置 + public Dictionary> currentTeamSettings = new Dictionary>(); + /// + /// 根据此字段来在编队信息页显示已有编队 + /// + public int currentSelectedTeam = 0; + /// + /// 记录被选中的编队中角色的索引,用于处理队列位置交换的逻辑。-1表示无角色被选中 + /// + public int currentSelectedCharacter = -1; + /// + /// 在修改被选中的编队中角色的索引时触发 + /// + public event Action OnSelectedCharacterChanged; + + void Awake() + { + if (Instance == null) + { + Instance = this; + } + else + { + Destroy(gameObject); + } + } + + void Start() + { + if(teamSettingPanelInstance == null) + { + teamSettingPanelInstance = teamSettingPanel.Instance; + } + } + /// + /// 读取玩家存档信息后可直接在此写入编队信息 + /// + /// + public void setcurrentTeamSettings(Dictionary> playerTeamSettings) + { + currentTeamSettings = playerTeamSettings; + } + public List getCurrentTeam() + { + return currentTeamSettings[currentSelectedTeam]; + } + + public void setCurrentSelectedCharacterInTeam(int characterIndex) + { + if (characterIndex != currentSelectedCharacter) + { + currentSelectedCharacter = characterIndex; + OnSelectedCharacterChanged?.Invoke(); // 触发事件 + } + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/scripts/gamePlay_gameplay/Team/TeamManager.cs.meta b/Assets/scripts/gamePlay_gameplay/Team/TeamManager.cs.meta new file mode 100644 index 00000000..426b6950 --- /dev/null +++ b/Assets/scripts/gamePlay_gameplay/Team/TeamManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: debeba9c3c2f7334ab04c769534a1f85 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: