using UnityEngine; using UnityEngine.UI; using QFramework; using System.Collections.Generic; namespace QFramework.Example { public class UIPointQuestionData : UIPanelData { public string paths; } public partial class UIPointQuestion : UIPanel { public Dictionary pointMap = new Dictionary(); protected override void OnInit(IUIData uiData = null) { mData = uiData as UIPointQuestionData ?? new UIPointQuestionData(); // please add init code here } protected override void OnOpen(IUIData uiData = null) { mData = uiData as UIPointQuestionData ?? new UIPointQuestionData(); var paths = mData.paths.Split(','); for (int i = 0; i < paths.Length; i++) { string path = paths[i]; GameObject obj = Utility.FindObj(path); if (obj != null) { GameObject point = GameObject.Instantiate(PointPrefab.gameObject, Content); point.name = (i + 1).ToString(); pointMap.Add(obj, point); } } } private void Update() { if (gameObject.activeSelf) { foreach (var item in pointMap) { Vector3 screenPosition = Camera.main.WorldToScreenPoint(item.Key.Position()); item.Value.transform.position = screenPosition; } } } protected override void OnShow() { } protected override void OnHide() { } protected override void OnClose() { pointMap.Clear(); } } }