From 24f59b89e9eabcfe948fc0ba304a8dbec2deda14 Mon Sep 17 00:00:00 2001 From: River Jiang <546213258@qq.com> Date: Tue, 27 Oct 2020 14:09:47 +0800 Subject: [PATCH] Merge branch 'master' of http://172.16.1.52:8090/r/GemBattle into master --- Assets/Scripts/TowerDefense/Level/EndlessDropManager.cs | 94 +++++++++++++++++++++-------------------------- 1 files changed, 42 insertions(+), 52 deletions(-) diff --git a/Assets/Scripts/TowerDefense/Level/EndlessDropManager.cs b/Assets/Scripts/TowerDefense/Level/EndlessDropManager.cs index 7711724..cff5332 100644 --- a/Assets/Scripts/TowerDefense/Level/EndlessDropManager.cs +++ b/Assets/Scripts/TowerDefense/Level/EndlessDropManager.cs @@ -16,11 +16,6 @@ public class EndlessDropManager : Singleton<EndlessDropManager> { /// <summary> - /// 掉落道具预制体列表 - /// </summary> - public List<GameObject> PropList; - - /// <summary> /// 获得掉落事件 /// </summary> public event Action<EndlessDrop> ObtainDropEvent; @@ -40,10 +35,19 @@ /// </summary> private Dictionary<int, GameObject> DropObjDic; + private string dropPath = "UI/Props/EndlessDropEffect"; + + /// <summary> + /// 自动拾取时间,先统一处理 + /// </summary> + public float AutoPickupTime = 5f; + /// <summary> /// 掉落半径 /// </summary> public float DropRadius { get; set; } = 50f; + + public Canvas canvas; // Start is called before the first frame update private void Start() @@ -90,25 +94,6 @@ } /// <summary> - /// 根据reward获得预制体对象 - /// </summary> - /// <param name="data"></param> - private GameObject GetPrefabByReward(reward data) - { - switch (data.type) - { - case CURRENCY.Money: - return PropList[0]; - case CURRENCY.Gold: - return PropList[1]; - case CURRENCY.Box: - return PropList[1 + data.id]; - } - - return null; - } - - /// <summary> /// 获得一些掉落 /// </summary> /// <param name="list"></param> @@ -120,17 +105,7 @@ EndlessDrop drop = new EndlessDrop(); drop.Reward = list[i]; drop.Id = GetDropId(); - - GameObject prefabObj = GetPrefabByReward(list[i]); - - if (prefabObj == null) - { - Debug.LogError($"--------------------- type: {list[i].type} id:{list[i].id} 没有对应的预制体 ---------------------"); - continue; - } - - EndlessDropReward dropReward = prefabObj.GetComponent<EndlessDropReward>(); - drop.AutoPickupTime = dropReward.AutoPickupTime; + drop.AutoPickupTime = AutoPickupTime; CreateDrop(drop, pos, list.Count > 0); AllDropList.Add(drop); } @@ -153,32 +128,47 @@ /// 在场景中创建掉落的icon /// </summary> /// <param name="drop"></param> - /// <param name="pos"></param> + /// <param name="worldPos">世界坐标</param> /// <param name="isRandom">是否需要随机位置</param> - private void CreateDrop(EndlessDrop drop, Vector3 pos, bool isRandom = false) + private void CreateDrop(EndlessDrop drop, Vector3 worldPos, bool isRandom = false) { - GameObject dropLayer = GameObject.Find("DropLayer"); - GameObject prefabObj = GetPrefabByReward(drop.Reward); + GameObject prefabObj = Resources.Load<GameObject>(dropPath); GameObject obj = Instantiate(prefabObj); + EndlessDropReward dropReward = obj.GetComponent<EndlessDropReward>(); + + dropReward.DropData = drop; + dropReward.SetIcon(); + GameObject mainUI = GameObject.Find("MainUI"); Transform mainUITransform = mainUI.GetComponent<Transform>(); obj.GetComponent<Transform>().SetParent(mainUITransform, true); - Vector3 screenPos = Camera.main.WorldToScreenPoint(pos); - screenPos.z = 0; - obj.transform.position = screenPos; - if (isRandom) - { - Vector2 p = UnityEngine.Random.insideUnitCircle * DropRadius; - Vector3 pos1 = p.normalized * p.magnitude; - Vector3 objPos = obj.transform.position; - objPos.x += pos1.x; - objPos.y += pos1.y; - obj.transform.position = objPos; - } + // Vector3 screenPos = Camera.main.WorldToScreenPoint(worldPos); + // Vector2 targetPos; + // RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform, screenPos, canvas.worldCamera, out targetPos); + // RectTransform rectTransform = obj.GetComponent<RectTransform>(); + // rectTransform.anchoredPosition = pos; + // obj.transform.localRotation = Quaternion.identity; - obj.GetComponent<EndlessDropReward>().DropData = drop; + // Vector3 screenPos = Camera.main.WorldToScreenPoint(worldPos); + // screenPos.z = 0; + + obj.transform.position = worldPos; + obj.transform.localRotation = Quaternion.identity; + obj.transform.localScale = Vector3.one; + + // if (isRandom) + // { + // Vector2 p = UnityEngine.Random.insideUnitCircle * DropRadius; + // Vector3 pos1 = p.normalized * p.magnitude; + // Vector3 objPos = obj.transform.position; + // objPos.x += pos1.x; + // objPos.y += pos1.y; + // obj.transform.position = objPos; + // } + + dropReward.PlayParticle(); DropObjDic.Add(drop.Id, obj); } -- Gitblit v1.9.1