diff --git a/Assets/Zion/Scripts/Adam/GameManager.cs b/Assets/Zion/Scripts/Adam/GameManager.cs index 35485be9..187ba248 100644 --- a/Assets/Zion/Scripts/Adam/GameManager.cs +++ b/Assets/Zion/Scripts/Adam/GameManager.cs @@ -196,11 +196,7 @@ public class GameManager : MonoSingleton UnmannedAerialVehicleManage unmannedAerialVehicleManage = hitInfo.collider.GetComponent(); UnmannedAerialVehicleUI.Instance.unmannedAerialVehicleManage = unmannedAerialVehicleManage; - DroneViewDisplay.Instance.CreateUI( - unmannedAerialVehicleManage.equipmentCommon.deviceID, - unmannedAerialVehicleManage.wrjModel, - unmannedAerialVehicleManage.WRJName, - unmannedAerialVehicleManage.dzWRJCamera); + DroneViewDisplay.Instance.CreateUI(unmannedAerialVehicleManage,true); } } } diff --git a/Assets/Zion/Scripts/ModelFunction/UAV/UnmannedAerialVehicleManage.cs b/Assets/Zion/Scripts/ModelFunction/UAV/UnmannedAerialVehicleManage.cs index 139b5dd1..4785590e 100644 --- a/Assets/Zion/Scripts/ModelFunction/UAV/UnmannedAerialVehicleManage.cs +++ b/Assets/Zion/Scripts/ModelFunction/UAV/UnmannedAerialVehicleManage.cs @@ -162,6 +162,7 @@ public class UnmannedAerialVehicleManage : MonoBehaviour //Formation(1);//默认阵型 // 订阅布尔值变化事件 OnActivationChanged += OnActivationChangedHandler; + DroneViewDisplay.Instance.CreateUI(this, false); } diff --git a/Assets/Zion/Scripts/WRJ0125/DroneViewDisplay.cs b/Assets/Zion/Scripts/WRJ0125/DroneViewDisplay.cs index 4ef624bc..3267a399 100644 --- a/Assets/Zion/Scripts/WRJ0125/DroneViewDisplay.cs +++ b/Assets/Zion/Scripts/WRJ0125/DroneViewDisplay.cs @@ -10,8 +10,15 @@ public class DroneViewDisplay : MonoSingleton { public Transform uiParent; #region UI + /// + /// WRJUI集合 + /// public static List radioAngleViews = new List(); /// + /// 所有无人机RenderTexture集合 + /// + public static List renderTextures = new List(); + /// /// UIPrefab /// [Header("UIPrefab")] @@ -56,30 +63,73 @@ public class DroneViewDisplay : MonoSingleton /// 无人机设备类型 /// 无人机名称 /// 渲染摄像机画面 - public void CreateUI(string deviceID, WRJModel wRJModel, string name, Camera camera) + public void CreateUI(UnmannedAerialVehicleManage unmannedAerialVehicleManage,bool isShow) { - RadioAngleView radioAngleView = radioAngleViews.Find(x => x.deviceID == deviceID); + RadioAngleView radioAngleView = radioAngleViews.Find(x => x.deviceID == unmannedAerialVehicleManage.equipmentCommon.deviceID); if (radioAngleView) { radioAngleViewMax.localScale = Vector3.one; textNmme.text = name; - rawShow.texture = camera.targetTexture; + rawShow.texture = unmannedAerialVehicleManage.wrjModel == WRJModel.电子侦察无人机 ? + unmannedAerialVehicleManage.dzWRJCamera.targetTexture: unmannedAerialVehicleManage.gxWRJCamera.targetTexture; + } else { - if (wRJModel == WRJModel.电子侦察无人机|| wRJModel == WRJModel.光学无人机){ + if (unmannedAerialVehicleManage.wrjModel == WRJModel.电子侦察无人机|| unmannedAerialVehicleManage.wrjModel == WRJModel.光学无人机){ GameObject wrj = Instantiate(prefabRadioAngleView, uiParent); + wrj.transform.localScale = isShow ? Vector3.one : Vector3.zero; wrj.name = name; RadioAngleView _radioAngleView = wrj.GetComponent(); if (_radioAngleView) { - _radioAngleView.deviceID = deviceID; - _radioAngleView.textNmme.text = name; - _radioAngleView.rawShow.texture = camera.targetTexture; - Mask mask = wrj.transform.GetComponentInChildren(); + _radioAngleView.deviceID = unmannedAerialVehicleManage.equipmentCommon.deviceID; + _radioAngleView.textNmme.text = name; Mask mask = wrj.transform.GetComponentInChildren(); if (mask) - mask.enabled= wRJModel == WRJModel.电子侦察无人机 ? true : false; + mask.enabled= unmannedAerialVehicleManage.wrjModel == WRJModel.电子侦察无人机 ? true : false; radioAngleViews.Add(_radioAngleView); + // 创建 RenderTexture + RenderTexture renderTexture = new RenderTexture(500, 500, 0); + renderTexture.name = unmannedAerialVehicleManage.equipmentCommon.deviceID; + unmannedAerialVehicleManage.dzWRJCamera.targetTexture = renderTexture; + unmannedAerialVehicleManage.gxWRJCamera.targetTexture = renderTexture; + _radioAngleView.rawShow.texture = unmannedAerialVehicleManage.wrjModel == WRJModel.电子侦察无人机 ? + unmannedAerialVehicleManage.dzWRJCamera.targetTexture : unmannedAerialVehicleManage.gxWRJCamera.targetTexture; + renderTextures.Add(renderTexture); + + } + } + } + } + + + /// + /// 删除无人机UI + /// + /// + public void DistroyUI(string deviceID) + { + RadioAngleView radioAngleView = radioAngleViews.Find(x => x.deviceID == deviceID); + if (radioAngleView) + { + Destroy(radioAngleView.gameObject); + for(int i= 0; i < radioAngleViews.Count; i++) + { + if (radioAngleView == null) + { + radioAngleViews.RemoveAt(i); + } + } + } + RenderTexture renderTexture = renderTextures.Find(x => x.name == deviceID); + if (renderTexture) + { + Destroy(renderTexture); + for (int i = 0; i < renderTextures.Count; i++) + { + if (renderTextures == null) + { + renderTextures.RemoveAt(i); } } }