129 lines
4.1 KiB
C#
129 lines
4.1 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
/// <summary>
|
|
/// 单机测试脚本
|
|
/// </summary>
|
|
public class SingleMachineTest : MonoBehaviour
|
|
{
|
|
/// <summary>
|
|
/// 无人机
|
|
/// </summary>
|
|
public List<UnmannedAerialVehicleManage> unmannedAerialVehicleManages = new List<UnmannedAerialVehicleManage>();
|
|
/// <summary>
|
|
/// 雷达控制
|
|
/// </summary>
|
|
public List<RadarManger> radarMangers = new List<RadarManger>();
|
|
/// <summary>
|
|
/// 激光火控平台
|
|
/// </summary>
|
|
public List<LaserFireControlPlatformManger> laserFireControlPlatformMangers = new List<LaserFireControlPlatformManger>();
|
|
/// <summary>
|
|
/// 地面无线电干扰控制
|
|
/// </summary>
|
|
public List<TerrestrialRadioInterferenceManger> terrestrialRadioInterferenceMangers = new List<TerrestrialRadioInterferenceManger>();
|
|
|
|
|
|
|
|
private Coroutine timerCoroutine; // 协程对象
|
|
private bool isTimerRunning = false; // 定时器运行状态
|
|
public float interval = 2.0f; // 间隔时间
|
|
|
|
|
|
/// <summary>
|
|
/// 测试用
|
|
/// </summary>
|
|
public string msg1;
|
|
/// <summary>
|
|
/// 测试接受数据
|
|
/// </summary>
|
|
private AdamThinkDevicesData.Root root;
|
|
void Start()
|
|
{
|
|
root = Newtonsoft.Json.JsonConvert.DeserializeObject<AdamThinkDevicesData.Root>(msg1);
|
|
|
|
unmannedAerialVehicleManages.ForEach(x => x.FillInTheData(root.data[2].list_para));
|
|
radarMangers.ForEach(x => x.FillInTheData(root.data[0].list_para));
|
|
laserFireControlPlatformMangers.ForEach(x => x.FillInTheData(root.data[3].list_para));
|
|
terrestrialRadioInterferenceMangers.ForEach(x => x.FillInTheData(root.data[1].list_para));
|
|
// 开始协程
|
|
StartTimer();
|
|
}
|
|
|
|
void FixedUpdate()
|
|
{
|
|
if (Input.GetMouseButtonDown(1))
|
|
{
|
|
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
|
|
RaycastHit hitInfo;
|
|
if (Physics.Raycast(ray, out hitInfo, 1000))
|
|
{
|
|
if (hitInfo.collider.tag == "WRJ")
|
|
{
|
|
UnmannedAerialVehicleUI.Instance.unmannedAerialVehicleManage = hitInfo.collider.GetComponent<UnmannedAerialVehicleManage>();
|
|
}
|
|
}
|
|
}
|
|
|
|
// 按下空格键来切换定时器的运行状态
|
|
if (Input.GetKeyDown(KeyCode.Space))
|
|
{
|
|
if (isTimerRunning)
|
|
{
|
|
// 暂停定时器
|
|
Debug.Log("暂停定时器执行调用: " + Time.time);
|
|
StopTimer();
|
|
}
|
|
else
|
|
{
|
|
// 继续定时器
|
|
Debug.Log("继续定时器执行调用: " + Time.time);
|
|
StartTimer();
|
|
}
|
|
}
|
|
}
|
|
|
|
IEnumerator Timer()
|
|
{
|
|
while (true)
|
|
{
|
|
//Debug.Log("执行调用: " + Time.time);
|
|
yield return new WaitForSeconds(interval); // 等待一段时间后继续执行
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 启动演练
|
|
/// </summary>
|
|
void StartTimer()
|
|
{
|
|
if (timerCoroutine == null)
|
|
{
|
|
timerCoroutine = StartCoroutine(Timer());
|
|
isTimerRunning = true;
|
|
unmannedAerialVehicleManages.ForEach(x => x.isStartRehearsing = true);
|
|
radarMangers.ForEach(x => x.isStartRehearsing = true);
|
|
laserFireControlPlatformMangers.ForEach(x => x.isStartRehearsing = true);
|
|
terrestrialRadioInterferenceMangers.ForEach(x => x.isStartRehearsing = true);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 暂停演练
|
|
/// </summary>
|
|
void StopTimer()
|
|
{
|
|
if (timerCoroutine != null)
|
|
{
|
|
StopCoroutine(timerCoroutine);
|
|
timerCoroutine = null;
|
|
isTimerRunning = false;
|
|
unmannedAerialVehicleManages.ForEach(x => x.isStartRehearsing = false);
|
|
radarMangers.ForEach(x => x.isStartRehearsing = false);
|
|
laserFireControlPlatformMangers.ForEach(x => x.isStartRehearsing = false);
|
|
terrestrialRadioInterferenceMangers.ForEach(x => x.isStartRehearsing = false);
|
|
}
|
|
}
|
|
}
|