This commit is contained in:
账号名 2024-01-25 17:14:57 +08:00
parent d0e0599bbb
commit e342d4e384
3 changed files with 61 additions and 14 deletions

View File

@ -196,11 +196,7 @@ public class GameManager : MonoSingleton<GameManager>
UnmannedAerialVehicleManage unmannedAerialVehicleManage = hitInfo.collider.GetComponent<UnmannedAerialVehicleManage>();
UnmannedAerialVehicleUI.Instance.unmannedAerialVehicleManage = unmannedAerialVehicleManage;
DroneViewDisplay.Instance.CreateUI(
unmannedAerialVehicleManage.equipmentCommon.deviceID,
unmannedAerialVehicleManage.wrjModel,
unmannedAerialVehicleManage.WRJName,
unmannedAerialVehicleManage.dzWRJCamera);
DroneViewDisplay.Instance.CreateUI(unmannedAerialVehicleManage,true);
}
}
}

View File

@ -162,6 +162,7 @@ public class UnmannedAerialVehicleManage : MonoBehaviour
//Formation(1);//默认阵型
// 订阅布尔值变化事件
OnActivationChanged += OnActivationChangedHandler;
DroneViewDisplay.Instance.CreateUI(this, false);
}

View File

@ -10,8 +10,15 @@ public class DroneViewDisplay : MonoSingleton<DroneViewDisplay>
{
public Transform uiParent;
#region UI
/// <summary>
/// WRJUI集合
/// </summary>
public static List<RadioAngleView> radioAngleViews = new List<RadioAngleView>();
/// <summary>
/// 所有无人机RenderTexture集合
/// </summary>
public static List<RenderTexture> renderTextures = new List<RenderTexture>();
/// <summary>
/// UIPrefab
/// </summary>
[Header("UIPrefab")]
@ -56,30 +63,73 @@ public class DroneViewDisplay : MonoSingleton<DroneViewDisplay>
/// <param name="wRJModel">无人机设备类型</param>
/// <param name="name">无人机名称</param>
/// <param name="camera">渲染摄像机画面</param>
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<RadioAngleView>();
if (_radioAngleView)
{
_radioAngleView.deviceID = deviceID;
_radioAngleView.textNmme.text = name;
_radioAngleView.rawShow.texture = camera.targetTexture;
Mask mask = wrj.transform.GetComponentInChildren<Mask>();
_radioAngleView.deviceID = unmannedAerialVehicleManage.equipmentCommon.deviceID;
_radioAngleView.textNmme.text = name; Mask mask = wrj.transform.GetComponentInChildren<Mask>();
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);
}
}
}
}
/// <summary>
/// 删除无人机UI
/// </summary>
/// <param name="deviceID"></param>
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);
}
}
}