using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using FSEvent; public class CardPanelManager : MonoBehaviour { public Transform cardPanel; public GameObject cardPrefab; // 用来保存卡片的数组 private ArrayList cards = new ArrayList(); // Use this for initialization void Start () { //GameObject cardTransform = Instantiate(cardPrefab); //cardTransform.transform.SetParent(bg, false); //Image bg = cardPanel.add InitEvents(); } // Update is called once per frame void Update () { } private void OnDestroy() { RemoveEvents(); } /* * 注册监听事件 */ private void InitEvents() { print("Card Panel 注册事件 ... "); EventListener.Instance.RegisterEvent(EventEnum.EVENT_SHOW_CARD_PANEL, ShowCardPanel); EventListener.Instance.RegisterEvent(EventEnum.EVENT_CLEAR_CARDS, CleatCards); } /* * 移除监听事件 */ private void RemoveEvents() { } /* * 显示卡片面板 */ private void ShowCardPanel() { print("展示面板 ... "); cardPanel.gameObject.SetActive(true); ShufflingCard(); } /* * 发牌 */ private void ShufflingCard() { // 如果手牌小于5,则 if (cards.Count < 5) { AddCard(); Invoke("ShufflingCard", 1.0f); } } /* * 添加卡牌 */ public void AddCard() { // 创建一个卡牌 GameObject card = Instantiate(cardPrefab); // 将卡牌加到指定的图层中 card.transform.SetParent(cardPanel, false); cards.Add(card.transform); ArrangeCards(); } /* * 重新排列卡牌 */ private void ArrangeCards() { // 空隙 float space = 50; // 配置的半径 float radius = 300; // 获取偏移的角度 float angle = Mathf.Atan(space / radius) * 180 / Mathf.PI; // 遍历数组 for (int i = 0; i < cards.Count; i++) { // 重定义位置 float loc = i - (float)(cards.Count - 1) / 2; Transform cardTransform = (Transform)cards[i]; // 设置位置 cardTransform.localPosition = new Vector3(loc * space, 0, 0); // 设置角度 cardTransform.localRotation = Quaternion.Euler(0, 0, angle * (loc * -1)); float scale = 1 - (Mathf.Abs(loc) / 5); cardTransform.localScale = new Vector3(scale, scale, 1); } } /* * 清理手牌 */ private void CleatCards() { foreach (Transform card in cards) { Destroy(card.gameObject); } cards.Clear(); EventListener.Instance.PostEvent(EventEnum.EVENT_ENTER_PLAY_A_HAND_ROUND); } }