using UnityEngine; using UnityEngine.UI; using QFramework; using System.Text.RegularExpressions; using DG.Tweening; using System; using System.Collections.Generic; using System.Linq; using static UnityEngine.GraphicsBuffer; using UnityEngine.Assertions; using static System.Net.Mime.MediaTypeNames; namespace QFramework.Example { public class UIGuideTipData : UIPanelData { public string targets; public string showName; public string offestPos; public string tiptext; public string tipaudio; public string tiptitle; } public partial class UIGuideTip : UIPanel { [SerializeField] public Camera gameCamera; [SerializeField] public List TipOffectList; [SerializeField] public List TipItemList; //UIGuideTipData uIGuideTipData; public Camera Camera { get { return this.gameCamera; } set { this.gameCamera = value; } } ResLoader loader; protected override void OnInit(IUIData uiData = null) { mData = uiData as UIGuideTipData ?? new UIGuideTipData(); //uIGuideTipData = mData; // please add init code here loader = ResLoader.Allocate(); TypeEventSystem.Global.Register((arg) => Hide()).UnRegisterWhenGameObjectDestroyed(gameObject); } protected override void OnOpen(IUIData uiData = null) { Connet.RemoveAllChildren(); TipOffectList.Clear(); TipItemList.Clear(); mData = uiData as UIGuideTipData ?? new UIGuideTipData(); //uIGuideTipData = mData; if (uiData != null) { Connet.RemoveAllChildren(); gameCamera = GameObject.Find("ZhanShiCamera").GetComponent(); mData = uiData as UIGuideTipData ?? new UIGuideTipData(); Debug.Log(mData); List Objs = mData.targets.Split(',')?.ToList(); List ShowTexts = mData.showName.Split(',')?.ToList(); List Tip = mData.tiptext.Split('|')?.ToList(); List audio = mData.tipaudio.Split('|')?.ToList(); List< String > tiptitle = mData.tiptitle.Split('|')?.ToList(); if (String.IsNullOrEmpty(mData.offestPos) == false) { List TipOffects = mData.offestPos.Split('|')?.ToList(); for (int i = 0; i < TipOffects.Count; i++) { Vector3 TipOffect = Utility.GetVector3FromStrArray(TipOffects[i]); // Debug.Log(TipOffect + "??????????"); TipOffectList.Add(TipOffect); } } else { Debug.Log("没有设置Tip偏移"); } //生成预制体 for (int i = 0; i < Objs.Count; i++) { GameObject tipItemObj = GameObject.Instantiate(TipItem.gameObject, Connet); TipItemList.Add(tipItemObj); tipItemObj.name = Objs[i]; GameObject target = GameObject.Find(Objs[i].ToString()); if (target == null) { Debug.Log("出现异常,没有找到该物体"); } //Tip文字名称 tipItemObj.GetComponentInChildren().text = ShowTexts[i]; UpdatePos( target, GetComponentInParent(), tipItemObj.GetComponent(), tipItemObj.transform.Find("tip").GetComponent(), TipOffectList[i], tipItemObj.transform.Find("Circle").GetComponent(), tipItemObj.transform.Find("Line").GetComponent() ); } if (Tip.Count != 0 || audio.Count != 0|| tiptitle.Count != 0) { // 计算两个列表的最小长度,确保安全索引范围 int minListCount = Math.Min(Tip.Count, audio.Count); int buttonCount = TipItemList.Count; for (int i = 0; i < buttonCount; i++) { var tipButton = TipItemList[i].transform.Find("tip").GetComponent