性能优化

This commit is contained in:
lishuo 2022-06-01 16:10:42 +08:00
parent c579c1b130
commit cda569afd5
2 changed files with 118 additions and 58 deletions

View File

@ -109,12 +109,18 @@ public class RowerHomeScript : PFUIPanel
uint totalDistance = 0;
Transform slider;
RowerGraphChartFeed rowerGraphChartFeed { get; set; }
RowerGraphChartFeed graphChartFeed { get; set; }
protected override void Start()
{
var rect = transform.GetComponent<RectTransform>();
rect.offsetMax = Vector2.zero;
rect.offsetMin = Vector2.zero;
rowerGraphChartFeed = mid.Find("GraphChart").GetComponent<RowerGraphChartFeed>();
graphChartFeed = transform.Find("Rower/Modes/Scroll/M2/MyData/GraphChart").GetComponent<RowerGraphChartFeed>();
}
Transform M1 { get; set; }
protected override void Awake()
{
Id = Guid.NewGuid().ToString();
@ -158,6 +164,7 @@ public class RowerHomeScript : PFUIPanel
{13,Resources.Load<Sprite>("Images/RowerNew/序列帧/划船机0014") },
{14,Resources.Load<Sprite>("Images/RowerNew/序列帧/划船机0015") },
};
rowerMultiModeScript = GetComponent<RowerMultiModeScript>();
GetComponent<RectTransform>().localScale = Vector3.one;
GetComponent<RectTransform>().localPosition = Vector3.zero;
records = new List<string>();
@ -166,11 +173,30 @@ public class RowerHomeScript : PFUIPanel
historyPullList = new List<DoubleVector2>();
//mainNav.ShowExit();
M1 = transform.Find("Rower/Modes/Scroll/M1");
left = transform.Find("Rower/Modes/Scroll/M1/Left");
bottom = transform.Find("Rower/Bottom");
KMText = bottom.Find("KM/Value").GetComponent<Text>();
TimeText = bottom.Find("Time/Value").GetComponent<Text>();
BPMText = bottom.Find("BPM/Value").GetComponent<Text>();
mid = transform.Find("Rower/Modes/Scroll/M1/Mid");
rmydata = transform.Find("Rower/Modes/Scroll/M2/MyData");
slider = transform.Find("ResBar/PFUISlider");
WText = mid.Find("W/Value").GetComponent<Text>();
rmyWText = rmydata.Find("W/Value").GetComponent<Text>();
FiveText = bottom.Find("500/Value").GetComponent<Text>();
MSText = bottom.Find("MS/Value").GetComponent<Text>();
ExpectedText = bottom.Find("Expected/Value").GetComponent<Text>();
TimesText = left.Find("Times/Value").GetComponent<Text>();
Caloriestext = left.Find("Calories/Value").GetComponent<Text>();
rmyCaloriestext = rmydata.Find("Calories/Value").GetComponent<Text>();
AvgForceText = mid.Find("AvgForce/Value").GetComponent<Text>();
rmyAvgForceText = rmydata.Find("AvgForce/Value").GetComponent<Text>();
PeakForceText = mid.Find("PeakForce/Value").GetComponent<Text>();
rmyPeakForceText = rmydata.Find("PeakForce/Value").GetComponent<Text>();
UIManager.AddEvent(transform.Find("ResBar/BtnAdd").gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, b =>
{
if (RowerData != null)
@ -560,45 +586,45 @@ public class RowerHomeScript : PFUIPanel
left.Find("Rower").GetComponent<Image>().sprite = spriteDict[0];
left.Find("LeftImage/Value").GetComponent<Image>().fillAmount = 0;
left.Find("RightImage/Value").GetComponent<Image>().fillAmount = 0;
left.Find("Times/Value").GetComponent<Text>().text = "---";
left.Find("Calories/Value").GetComponent<Text>().text = "---";
rmydata.Find("Calories/Value").GetComponent<Text>().text = "---";
TimesText.text = "---";
Caloriestext.text = "---";
rmyCaloriestext.text = "---";
pullList.Clear();
historyPullList.Clear();
SetChartData(pullList, historyPullList);
//SetChartData(pullList, historyPullList);
//mid.Find("GraphChart").GetComponent<RowerGraphChartFeed>().SetData(pullList);
openTimer = false;
if (rowerType.type == 0)
{
bottom.Find("Time/Value").GetComponent<Text>().text = "---";
bottom.Find("KM/Value").GetComponent<Text>().text = "---";
TimeText.text = "---";
KMText.text = "---";
}
else
{
if (rowerType.type == 1)
{
bottom.Find("Time/Value").GetComponent<Text>().text = "---";
bottom.Find("KM/Value").GetComponent<Text>().text = $"{rowerType.value}";
TimeText.text = "---";
KMText.text = $"{rowerType.value}";
}
else
{
bottom.Find("Time/Value").GetComponent<Text>().text = TimeSpan.FromSeconds(rowerType.value).ToPFString();
bottom.Find("KM/Value").GetComponent<Text>().text = "---";
TimeText.text = TimeSpan.FromSeconds(rowerType.value).ToPFString();
KMText.text = "---";
}
}
mid.Find("W/Value").GetComponent<Text>().text = "---";
rmydata.Find("W/Value").GetComponent<Text>().text = "---";
bottom.Find("500/Value").GetComponent<Text>().text = "---";
bottom.Find("MS/Value").GetComponent<Text>().text = "---";
WText.text = "---";
rmyWText.text = "---";
FiveText.text = "---";
MSText.text = "---";
//bottom.Find("MS/AvgValue").GetComponent<Text>().text = "---";
bottom.Find("BPM/Value").GetComponent<Text>().text = "---";
bottom.Find("Expected/Value").GetComponent<Text>().text = "---";
ExpectedText.text = "---";
bottom.Find("Expected/Title").GetComponent<Text>().text = bottom.Find("Expected/Title").GetComponent<Text>().text.Replace("EST",App.GetLocalString("EST"));
mid.Find("AvgForce/Value").GetComponent<Text>().text = "---";
rmydata.Find("AvgForce/Value").GetComponent<Text>().text = "---";
mid.Find("PeakForce/Value").GetComponent<Text>().text = "---";
rmydata.Find("PeakForce/Value").GetComponent<Text>().text = "---";
AvgForceText.text = "---";
rmyAvgForceText.text = "---";
PeakForceText.text = "---";
rmyPeakForceText.text = "---";
records.Clear();// = new List<string>();
values.Clear(); //= new List<TempRowerCalc>();
@ -689,6 +715,23 @@ public class RowerHomeScript : PFUIPanel
};
int tempx = 0;
#endif
private Text WText { get; set; }
private Text rmyWText { get; set; }
private Text FiveText { get; set; }
private Text MSText { get; set; }
private Text ExpectedText { get; set; }
private Text KMText { get; set; }
private Text BPMText { get; set; }
private Text TimeText { get; set; }
private Text TimesText { get; set; }
private Text Caloriestext { get; set; }
private Text rmyCaloriestext { get; set; }
private Text AvgForceText { get; set; }
private Text rmyAvgForceText { get; set; }
private Text PeakForceText { get; set; }
private Text rmyPeakForceText { get; set; }
void TimerTicks()
{
#if UNITY_EDITOR
@ -705,7 +748,7 @@ public class RowerHomeScript : PFUIPanel
if (RowerData == null) return;
#endif
var heartRate = HeartRate ?? 0;
bottom.Find("BPM/Value").GetComponent<Text>().text = heartRate.ToString();
BPMText.text = heartRate.ToString();
//断线重连继续
var distance = (int)RowerData.TotalDistance + historyDistance;
var energy = RowerData.TotalEnergy + historyEnergy;
@ -747,17 +790,17 @@ public class RowerHomeScript : PFUIPanel
return;
}
TimeSpan.FromSeconds(remainTime).ToPFString();
bottom.Find("Time/Value").GetComponent<Text>().text = TimeSpan.FromSeconds(remainTime).ToPFString();
TimeText.text = TimeSpan.FromSeconds(remainTime).ToPFString();
}
else
{
bottom.Find("Time/Value").GetComponent<Text>().text = TimeSpan.FromSeconds(++seconds).ToPFString();
TimeText.text = TimeSpan.FromSeconds(++seconds).ToPFString();
}
mid.Find("W/Value").GetComponent<Text>().text = "---";
rmydata.Find("W/Value").GetComponent<Text>().text = "---";
bottom.Find("500/Value").GetComponent<Text>().text = "---";
bottom.Find("MS/Value").GetComponent<Text>().text = "---";
bottom.Find("Expected/Value").GetComponent<Text>().text = "---";
WText.text = "---";
rmyWText.text = "---";
FiveText.text = "---";
MSText.text = "---";
ExpectedText.text = "---";
records.Add($"{strokeCount},{RowerData.ElapsedTime},{distance},0,0,0,{RowerData.ResistanceLevel},{heartRate},{energy},{RowerData.AveragePower},{truelyTime}");
tmpdata = new TempRowerCalc() { strokeCount = strokeCount, pace = 0, power = 0, rate = 0, heartRate = heartRate, distance = distance, energy = energy };
values.Add(tmpdata);
@ -770,17 +813,17 @@ public class RowerHomeScript : PFUIPanel
var pace = RowerData.InstantaneousPace;
mid.Find("W/Value").GetComponent<Text>().text = power.ToString();
rmydata.Find("W/Value").GetComponent<Text>().text = power.ToString();
bottom.Find("500/Value").GetComponent<Text>().text = TimeSpan.FromSeconds(pace).ToPFString();
bottom.Find("MS/Value").GetComponent<Text>().text = rate.ToString();
left.Find("Times/Value").GetComponent<Text>().text = strokeCount.ToString();
left.Find("Calories/Value").GetComponent<Text>().text = energy.ToString();
rmydata.Find("Calories/Value").GetComponent<Text>().text = energy.ToString();
mid.Find("AvgForce/Value").GetComponent<Text>().text = RowerData.AverageDriveForce.ToString("#0");
rmydata.Find("AvgForce/Value").GetComponent<Text>().text = RowerData.AverageDriveForce.ToString("#0");
mid.Find("PeakForce/Value").GetComponent<Text>().text = RowerData.PeakDriveForce.ToString("#0");
rmydata.Find("PeakForce/Value").GetComponent<Text>().text = RowerData.PeakDriveForce.ToString("#0");
WText.text = power.ToString();
rmyWText.text = power.ToString();
FiveText.text = TimeSpan.FromSeconds(pace).ToPFString();
MSText.text = rate.ToString();
TimesText.text = strokeCount.ToString();
Caloriestext.text = energy.ToString();
rmyCaloriestext.text = energy.ToString();
AvgForceText.text = RowerData.AverageDriveForce.ToString("#0");
rmyAvgForceText.text = RowerData.AverageDriveForce.ToString("#0");
PeakForceText.text = RowerData.PeakDriveForce.ToString("#0");
rmyPeakForceText.text = RowerData.PeakDriveForce.ToString("#0");
if (pace != 0)
{
if (rowerType.type == 1)
@ -788,14 +831,14 @@ public class RowerHomeScript : PFUIPanel
//设置里程时 显示预估时间 当前时间+剩余里程/配速(转换)
var remainDistance = rowerType.value - totalDistance;
var time = values.Count + (remainDistance / (500f / pace));
bottom.Find("Expected/Value").GetComponent<Text>().text = TimeSpan.FromSeconds(time).ToPFString();
ExpectedText.text = TimeSpan.FromSeconds(time).ToPFString();
}
else if (rowerType.type == 2)
{
var remainTime = rowerType.value - values.Count;
var dis = totalDistance + (remainTime * (500f / pace));
//设置时间时 显示预估里程 当前里程+剩余时间*配速
bottom.Find("Expected/Value").GetComponent<Text>().text = $"{dis.ToString("#0")}";
ExpectedText.text = $"{dis:#0}";
}
else
{
@ -809,13 +852,13 @@ public class RowerHomeScript : PFUIPanel
}
var dis = totalDistance - dif + (remainTime * (500f / pace));
//设置时间时 显示预估里程 当前里程+剩余时间*配速
bottom.Find("Expected/Value").GetComponent<Text>().text = $"{dis.ToString("#0")}";
ExpectedText.text = $"{dis:#0}";
}
}
if (rowerType.type == 2)
{
var remainTime = rowerType.value - (++seconds);
bottom.Find("Time/Value").GetComponent<Text>().text = TimeSpan.FromSeconds(remainTime).ToPFString();
TimeText.text = TimeSpan.FromSeconds(remainTime).ToPFString();
if (remainTime == 0)
{
records.Add($"{strokeCount},{RowerData.ElapsedTime},{distance},{RowerData.InstantaneousPower},{RowerData.InstantaneousPace},{RowerData.StrokeRate},{RowerData.ResistanceLevel},{heartRate},{energy},{RowerData.AveragePower},{truelyTime}");
@ -828,14 +871,14 @@ public class RowerHomeScript : PFUIPanel
}
else
{
bottom.Find("Time/Value").GetComponent<Text>().text = TimeSpan.FromSeconds(++seconds).ToPFString();
TimeText.text = TimeSpan.FromSeconds(++seconds).ToPFString();
}
if (rowerType.type == 1)
{
var remainDistance = rowerType.value - totalDistance;
if (remainDistance <= 0)
{
bottom.Find("KM/Value").GetComponent<Text>().text = "0";
KMText.text = "0";
records.Add($"{strokeCount},{RowerData.ElapsedTime},{distance},{RowerData.InstantaneousPower},{RowerData.InstantaneousPace},{RowerData.StrokeRate},{RowerData.ResistanceLevel},{heartRate},{energy},{RowerData.AveragePower},{truelyTime}");
tmpdata = new TempRowerCalc() { strokeCount = strokeCount, pace = pace, power = power, rate = rate, heartRate = heartRate, distance = distance, energy = energy };
values.Add(tmpdata);
@ -843,11 +886,11 @@ public class RowerHomeScript : PFUIPanel
HandleSaveDirect();
return;
}
bottom.Find("KM/Value").GetComponent<Text>().text = remainDistance.ToString();
KMText.text = remainDistance.ToString();
}
else
{
bottom.Find("KM/Value").GetComponent<Text>().text = totalDistance.ToString();
KMText.text = totalDistance.ToString();
}
records.Add($"{strokeCount},{RowerData.ElapsedTime},{distance},{RowerData.InstantaneousPower},{RowerData.InstantaneousPace},{RowerData.StrokeRate},{RowerData.ResistanceLevel},{heartRate},{energy},{RowerData.AveragePower},{truelyTime}");
@ -907,14 +950,12 @@ public class RowerHomeScript : PFUIPanel
}
}
}
Helper.DelectDir(dir);
UIManager.CloseConfirm();
}, 2,
() =>
{
if (files.Length > 0)
{
File.Delete(files[0]);
}
Helper.DelectDir(dir);
UIManager.CloseConfirm();
});
}
@ -943,9 +984,11 @@ public class RowerHomeScript : PFUIPanel
Debug.LogError(e);
}
}
private RowerMultiModeScript rowerMultiModeScript { get; set; }
void SendDataToRace(TempRowerCalc tmpdata)
{
GetComponent<RowerMultiModeScript>().HandleTimeTick(new RowerChartModel
rowerMultiModeScript.HandleTimeTick(new RowerChartModel
{
Pace = tmpdata.pace,
Power = tmpdata.power,
@ -963,8 +1006,15 @@ public class RowerHomeScript : PFUIPanel
PaintPullCurve(ftms.PullValue);
}
bool isPlay = false;
float preTime = 0f;
float curTime = 0f;
void PaintPullCurve(ushort y)
{
if (curTime-preTime < 0.1f)
{
return;
}
preTime = curTime;
Debug.Log("收到拉力" + y + ","+ DateTime.Now.Ticks);
//#if !UNITY_EDITOR
// if (!openTimer)
@ -1044,13 +1094,21 @@ public class RowerHomeScript : PFUIPanel
}
void SetChartData(List<DoubleVector2> v1, List<DoubleVector2> v2)
{
mid.Find("GraphChart").GetComponent<RowerGraphChartFeed>().SetData(v1,v2);
transform.Find("Rower/Modes/Scroll/M2/MyData/GraphChart").GetComponent<RowerGraphChartFeed>().SetData(v1);
if (M1.localPosition.x == 0)
{
rowerGraphChartFeed.SetData(v1, v2);
}
else
{
graphChartFeed.SetData(v1);
}
}
float staticTimer = 1f,shortTimer = 0.25f;
int ticks { get; set; } = 0;
void Update()
{
curTime += Time.deltaTime;
#if UNITY_EDITOR
if (openTimer || true)
#else
@ -1102,7 +1160,7 @@ public class RowerHomeScript : PFUIPanel
if (rowerType.type == 1 && totalDistance >=rowerType.value && !createTime.HasValue)
{
openTimer = false;
bottom.Find("KM/Value").GetComponent<Text>().text = "0";
KMText.text = "0";
records.Add($"{strokeCount},{RowerData.ElapsedTime},{distance},{power},{pace},{rate},{RowerData.ResistanceLevel},{heartRate},{energy},{RowerData.AveragePower},{truelyTime}");
var tmpdata = new TempRowerCalc() { strokeCount = strokeCount, pace = pace, power = power, rate = rate, heartRate = heartRate, distance = distance, energy = energy };
values.Add(tmpdata);
@ -1114,10 +1172,10 @@ public class RowerHomeScript : PFUIPanel
{
return;
}
mid.Find("W/Value").GetComponent<Text>().text = power.ToString();
rmydata.Find("W/Value").GetComponent<Text>().text = power.ToString();
bottom.Find("500/Value").GetComponent<Text>().text = TimeSpan.FromSeconds(pace).ToPFString();
bottom.Find("MS/Value").GetComponent<Text>().text = rate.ToString();
WText.text = power.ToString();
rmyWText.text = power.ToString();
FiveText.text = TimeSpan.FromSeconds(pace).ToPFString();
MSText.text = rate.ToString();
}
void HandleStatic()

View File

@ -44,6 +44,8 @@ public class RowerGraphChartFeed : MonoBehaviour
//graph.DataSource.StartBatch();
graph.DataSource.ClearCategory("Player 1");
graph.DataSource.ClearCategory("Player 2");
graph.ClearCache();
for (int i = 0; i < list.Count; i++)
{
var item = list[i];