From 8722a9920c1f6119bf6e769cba270e63097f8e25 Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Thu, 23 May 2024 10:08:29 +0800 Subject: + astar project --- .../Example18_RTS/RTSBuildingQueueUI.cs | 76 ++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/Scenes/OldExamples/Example18_RTS/RTSBuildingQueueUI.cs (limited to 'Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/Scenes/OldExamples/Example18_RTS/RTSBuildingQueueUI.cs') diff --git a/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/Scenes/OldExamples/Example18_RTS/RTSBuildingQueueUI.cs b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/Scenes/OldExamples/Example18_RTS/RTSBuildingQueueUI.cs new file mode 100644 index 0000000..15bda81 --- /dev/null +++ b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/Scenes/OldExamples/Example18_RTS/RTSBuildingQueueUI.cs @@ -0,0 +1,76 @@ +using UnityEngine; +using UnityEngine.UI; + +namespace Pathfinding.Examples.RTS { + [HelpURL("https://arongranberg.com/astar/documentation/stable/rtsbuildingqueueui.html")] + public class RTSBuildingQueueUI : VersionedMonoBehaviour { + RTSBuildingBarracks building; + public GameObject prefab; + public Vector3 worldOffset; + public Vector2 screenOffset; + UIItem item; + + class UIItem : RTSWorldSpaceUI.Item { + QueItem[] queItems; + RTSBuildingQueueUI parent; + + public UIItem (Transform tracking, RTSBuildingQueueUI parent) : base(tracking) { + this.parent = parent; + } + + struct QueItem { + public GameObject root; + public UnityEngine.UI.Image icon; + public UnityEngine.UI.Image progress; + + public QueItem (Transform root) { + this.root = root.gameObject; + icon = root.Find("Mask/Image").GetComponent(); + var p = root.Find("QueProgress"); + progress = p != null? p.GetComponent() : null; + } + } + + public override void SetUIRoot (UnityEngine.GameObject root) { + base.SetUIRoot(root); + queItems = new QueItem[4]; + queItems[0] = new QueItem(root.transform.Find("Que0")); + queItems[1] = new QueItem(root.transform.Find("Que/Que1")); + queItems[2] = new QueItem(root.transform.Find("Que/Que2")); + queItems[3] = new QueItem(root.transform.Find("Que/Que3")); + } + + public override void Update (UnityEngine.Camera cam) { + base.Update(cam); + for (int i = 0; i < queItems.Length; i++) { + if (i >= parent.building.queue.Count) { + queItems[i].root.SetActive(false); + } else { + queItems[i].root.SetActive(true); + if (i == 0) { + queItems[i].progress.fillAmount = parent.building.queueProgressFraction; + } + queItems[i].icon.sprite = null; //parent.building.queue[i].prefab.GetComponent; + } + } + } + } + + protected override void Awake () { + base.Awake(); + building = GetComponent(); + } + + void Start () { + item = new UIItem(transform, this); + RTSUI.active.worldSpaceUI.Add(item, prefab); + } + +#if UNITY_EDITOR + void Update () { + item.worldOffset = worldOffset; + item.screenOffset = screenOffset; + } +#endif + } +} -- cgit v1.1-26-g67d0