diff --git a/Assets/Scripts/App.cs b/Assets/Scripts/App.cs index d1763ba5..1f49e61b 100644 --- a/Assets/Scripts/App.cs +++ b/Assets/Scripts/App.cs @@ -21,7 +21,7 @@ public delegate void ChangeLanguageDelegate(); public static class App { - public static string Host = "http://192.168.0.101:5087/"; + public static string Host = "http://192.168.0.101:5083/"; public static string AppVersion = Application.version; diff --git a/Assets/Scripts/Devices/Ant/Interfaces/IRowerDevice.cs b/Assets/Scripts/Devices/Ant/Interfaces/IRowerDevice.cs index 1c645131..5f626e4d 100644 --- a/Assets/Scripts/Devices/Ant/Interfaces/IRowerDevice.cs +++ b/Assets/Scripts/Devices/Ant/Interfaces/IRowerDevice.cs @@ -13,6 +13,6 @@ namespace Assets.Scripts.Devices.Ant.Interfaces FtmsRowerData rowerData { get; } void Reset(); void SetResistanceLevel(ushort v); - void C2GetStatus(); + void C2GetStatus(byte[] bs); } } diff --git a/Assets/Scripts/Devices/Ble/Characteristic/C2RowerData.cs b/Assets/Scripts/Devices/Ble/Characteristic/C2RowerData.cs index 4bd671af..a64d66e2 100644 --- a/Assets/Scripts/Devices/Ble/Characteristic/C2RowerData.cs +++ b/Assets/Scripts/Devices/Ble/Characteristic/C2RowerData.cs @@ -11,7 +11,7 @@ namespace Assets.Scripts.Devices.Ble.Characteristic { public class C2RowerData : ICharacteristic, IRowerCommonData { - public Guid Uuid => ServiceUuids.Characteristics.C2RowerData; + public Guid Uuid => ServiceUuids.Characteristics.C2RowerData35; public Guid ServiceUuid => ServiceUuids.Characteristics.C2Service; @@ -56,25 +56,29 @@ namespace Assets.Scripts.Devices.Ble.Characteristic public void HandleAttributeReceived(byte[] data) { Debug.Log("数据" + string.Join(",", data)); - if (data[0] == 53) + if (data[0] == 0x35) { - PeakDriveForce = LbsToNewton(Convert.ToDouble(BitConvertHelper.ToUInt16(data, 13)) / 10,true); + PeakDriveForce = LbsToNewton(Convert.ToDouble(BitConvertHelper.ToUInt16(data, 13)) / 10, true); AverageDriveForce = LbsToNewton(Convert.ToDouble(BitConvertHelper.ToUInt16(data, 15)) / 10, true); + ElapsedTime = (int)(Convert.ToDouble(BitConvertHelper.ToUInt24(data, 1)) / 100); + TotalDistance = (uint)(Convert.ToDouble(BitConvertHelper.ToUInt24(data, 4)) / 10); + StrokeCount = BitConvertHelper.ToUInt16(data, 19); Debug.Log($"峰力值:{PeakDriveForce} 均力值{AverageDriveForce}"); } - else if (data[0] == 61) + else if (data[0] == 0x3d) { + //老款表头不支持 List r = new List(); for (int i = 3; i < data.Length; i += 2) { - ushort pull = data[i] < 10 ? (ushort)0 : Convert.ToUInt16(Math.Round(LbsToNewton(data[i], true))); + ushort pull = Convert.ToUInt16(Math.Round(LbsToNewton(data[i], true)));//data[i] < 10 ? (ushort)0 : Convert.ToUInt16(Math.Round(LbsToNewton(data[i], true))); r.Add(pull); PullValue = pull; } Debug.Log("拉力曲线:" + string.Join(",", r)); } - else if (data[0] == 49) + else if (data[0] == 0x31) { byte status = data[18]; int value = (data[17] << 16) + (data[16] << 8) + data[15]; @@ -90,26 +94,114 @@ namespace Assets.Scripts.Devices.Ble.Characteristic rowerType.type = 2; rowerType.value = value / 100; } - else + else { rowerType = null; } //isReadyStatus = data[9] == 0; var time = ((data[3] << 16) + (data[2] << 8) + data[1]) / 100; - Debug.Log("划船时间"+time); + Debug.Log("划船时间" + time); isReadyStatus = data[9] == 0; + if (RowerResChanged != null) + { + RowerResChanged.Invoke(data[19], new EventArgs()); + } + ResistanceLevel = data[19]; //isReadyStatus = data[2] == 1 || data[2] == 129; } + else if (data[0] == 0x32) + { + InstantaneousPace = (ushort)(Convert.ToDouble(BitConvertHelper.ToUInt16(data, 8)) / 100); + AveragePace = (ushort)(Convert.ToDouble(BitConvertHelper.ToUInt16(data, 10)) / 100); + //AveragePower = BitConvertHelper.ToUInt16(data, 17); + StrokeRate = (uint)data[6]; + } + else if (data[0] == 0x33) + { + TotalEnergy = BitConvertHelper.ToUInt16(data, 7); + AveragePower = BitConvertHelper.ToUInt16(data, 5); + } + else if (data[0] == 0x36) + { + InstantaneousPower = BitConvertHelper.ToUInt16(data, 4); + //TotalEnergy = BitConvertHelper.ToUInt16(data, 6); + } + //else if (data[0] == 0x39) + //{ + // AverageStrokeRate = (int)data[11]; + // ResistanceLevel = (int)data[16]; + //} //else if (data[0] == 34) //{ // isReadyStatus = data[2] == 1 || data[2] == 129; //} } + public event EventHandler StartEvent; private double LbsToNewton(double lbs,bool isKg = false) => 4.4482216 * lbs * (isKg ? (1f / 9.8f) : 1f); public void SetUnavailable() { //throw new NotImplementedException(); } + + /// + /// 划桨频率 + /// + public uint StrokeRate { get; set; } = 0; + /// + /// 划桨次数 + /// + public UInt16 StrokeCount { get; set; } = 0; + /// + /// 平均划桨频率 + /// + public int AverageStrokeRate { get; set; } = 0; + + public UInt32 TotalDistance { get; set; } = 0; + public UInt16 _instantaneousPace = 0; + /// + /// 即时配速 + /// + public UInt16 InstantaneousPace { + get => _instantaneousPace; + set + { + if (_instantaneousPace == 0 && value != 0 && StartEvent != null) + { + StartEvent.Invoke(null, new EventArgs()); + } + _instantaneousPace = value; + } + } + /// + /// 平均配速 + /// + public UInt16 AveragePace { get; set; } = 0; + + public int InstantaneousPower { get; set; } = 0; + + public int AveragePower { get; set; } = 0; + public int ElapsedTime { get; set; } = 0; + public int TotalEnergy { get; set; } = 0; + public int EnergyPerHour { get; set; } = 0; + public int EnergyPerMinute { get; set; } = 0; + public event EventHandler RowerResChanged; + public int ResistanceLevel { get; set; } = 0; + public void Reset() + { + this.StrokeRate = 0; + this.StrokeCount = 0; + this.AverageStrokeRate = 0; + this.TotalDistance = 0; + this.InstantaneousPace = 0; + this.AveragePace = 0; + this.InstantaneousPower = 0; + this.AveragePower = 0; + this.ResistanceLevel = 0; + this.TotalEnergy = 0; + this.EnergyPerHour = 0; + this.EnergyPerMinute = 0; + this.ElapsedTime = 0; + } } } diff --git a/Assets/Scripts/Devices/Ble/Characteristic/FtmsRowerData.cs b/Assets/Scripts/Devices/Ble/Characteristic/FtmsRowerData.cs index 675b8e84..b525ffe3 100644 --- a/Assets/Scripts/Devices/Ble/Characteristic/FtmsRowerData.cs +++ b/Assets/Scripts/Devices/Ble/Characteristic/FtmsRowerData.cs @@ -15,30 +15,42 @@ namespace Assets.Scripts.Devices.Ble.Characteristic /// /// 划桨频率 /// - public uint StrokeRate { get; private set; } = 0; + public uint StrokeRate { get; set; } = 0; /// /// 划桨次数 /// - public UInt16 StrokeCount { get; private set; } = 0; + public UInt16 StrokeCount { get; set; } = 0; /// /// 平均划桨频率 /// - public int AverageStrokeRate { get; private set; } = 0; + public int AverageStrokeRate { get; set; } = 0; - public UInt32 TotalDistance { get; private set; } = 0; + public UInt32 TotalDistance { get; set; } = 0; + public UInt16 _instantaneousPace = 0; /// /// 即时配速 /// - public UInt16 InstantaneousPace { get; private set; } = 0; + public UInt16 InstantaneousPace + { + get => _instantaneousPace; + set + { + if (_instantaneousPace == 0 && value != 0 && StartEvent != null) + { + StartEvent.Invoke(null, new EventArgs()); + } + _instantaneousPace = value; + } + } /// /// 平均配速 /// - public UInt16 AveragePace { get; private set; } = 0; + public UInt16 AveragePace { get; set; } = 0; - public int InstantaneousPower { get; private set; } = 0; + public int InstantaneousPower { get; set; } = 0; - public int AveragePower { get; private set; } = 0; - public static event EventHandler RowerResChanged; + public int AveragePower { get; set; } = 0; + public event EventHandler RowerResChanged; private int commonRes = 50; private int thinkRes = 50; @@ -57,17 +69,15 @@ namespace Assets.Scripts.Devices.Ble.Characteristic return commonRes; } } + set { } } /// /// 运行时间 /// - public int ElapsedTime { get; private set; } = 0; - - public int TotalEnergy { get; private set; } = 0; - - public int EnergyPerHour { get; private set; } = 0; - - public int EnergyPerMinute { get; private set; } = 0; + public int ElapsedTime { get; set; } = 0; + public int TotalEnergy { get; set; } = 0; + public int EnergyPerHour { get; set; } = 0; + public int EnergyPerMinute { get; set; } = 0; public double PeakDriveForce { get; set; } = 0; public double AverageDriveForce { get; set; } = 0; @@ -80,6 +90,8 @@ namespace Assets.Scripts.Devices.Ble.Characteristic public RowerDataFlag Flags; //拉力相关 public event EventHandler PullChanged; + //开始事件 + public event EventHandler StartEvent; private ushort _pullValue; public ushort PullValue { diff --git a/Assets/Scripts/Devices/Ble/Devices/FtmsRower.cs b/Assets/Scripts/Devices/Ble/Devices/FtmsRower.cs index 978512f6..4fac5dc5 100644 --- a/Assets/Scripts/Devices/Ble/Devices/FtmsRower.cs +++ b/Assets/Scripts/Devices/Ble/Devices/FtmsRower.cs @@ -59,18 +59,34 @@ namespace Assets.Scripts.Devices.Ble.Devices Debug.Log("ftms划船机" + service.Id); this.hwInterface.SubscribeCharacteristic(character, null); } - else if (character.MatchGuid(ServiceUuids.Characteristics.C2RowerData)) + else if (character.MatchGuid(ServiceUuids.Characteristics.C2RowerData35)) { Debug.Log("c2划船机基本数据" + service.Id); //C2RowerData.IsEnabled = true; this.hwInterface.SubscribeCharacteristic(character, null); } - else if (character.MatchGuid(ServiceUuids.Characteristics.C2RowerData1)) + else if (character.MatchGuid(ServiceUuids.Characteristics.C2RowerData3d)) { Debug.Log("c2划船机拉力数据" + service.Id); //C2RowerData.IsEnabled = true; this.hwInterface.SubscribeCharacteristic(character, null); } + else if (character.MatchGuid(ServiceUuids.Characteristics.C2RowerData32)) + { + this.hwInterface.SubscribeCharacteristic(character, null); + } + else if (character.MatchGuid(ServiceUuids.Characteristics.C2RowerData33)) + { + this.hwInterface.SubscribeCharacteristic(character, null); + } + else if (character.MatchGuid(ServiceUuids.Characteristics.C2RowerData36)) + { + this.hwInterface.SubscribeCharacteristic(character, null); + } + else if (character.MatchGuid(ServiceUuids.Characteristics.C2RowerData39)) + { + this.hwInterface.SubscribeCharacteristic(character, null); + } //else if (character.MatchGuid(ServiceUuids.Characteristics.C2RowerStatus)) //{ // Debug.Log("c2划船机响应数据" + service.Id); @@ -109,7 +125,7 @@ namespace Assets.Scripts.Devices.Ble.Devices } else { - var c = base.Characteristics.SingleOrDefault(x => x.Uuid == ServiceUuids.Characteristics.C2RowerData); + var c = base.Characteristics.SingleOrDefault(x => x.Uuid == ServiceUuids.Characteristics.C2RowerData35); if (c != null) { var data = new byte[] { characteristic.Id.ToByteArray()[0] }.Concat(response.Data).ToArray(); @@ -134,25 +150,24 @@ namespace Assets.Scripts.Devices.Ble.Devices // } //} } - public void C2GetStatus() + public void C2GetStatus(byte[] bs) { if (C2RowerData.IsEnabled == true) { //等对csafe协议研究透彻后写 - //if (this.c2Control != null) - //{ - - // var cmd = new byte[] { 0x80, 0xe8 }; - // byte a = cmd[0]; - // for (int i = 1; i < cmd.Length; i++) - // { - // a ^= cmd[i]; - // } - // cmd = new byte[] { 0xf1 }.Concat(cmd).Concat(new byte[] { a, 0xf2 }).ToArray(); - // Debug.Log("发送获取命令" + string.Join(",", cmd)); - // hwInterface.WriteCharacteristic(this.c2Control, cmd); - // //hwInterface.WriteCharacteristic(this.c2Control, new byte[] { 0xF1, 0x81, 0x81, 0xF2 }); - //} + if (this.c2Control != null) + { + var cmd = bs; + byte a = cmd[0]; + for (int i = 1; i < cmd.Length; i++) + { + a ^= cmd[i]; + } + cmd = new byte[] { 0xf1 }.Concat(cmd).Concat(new byte[] { a, 0xf2 }).ToArray(); + Debug.Log("发送获取命令" + string.Join(",", cmd)); + hwInterface.WriteCharacteristic(this.c2Control, cmd); + //hwInterface.WriteCharacteristic(this.c2Control, new byte[] { 0xF1, 0x81, 0x81, 0xF2 }); + } } } diff --git a/Assets/Scripts/Devices/Ble/Interfaces/IRowerCommonData.cs b/Assets/Scripts/Devices/Ble/Interfaces/IRowerCommonData.cs index a4c36536..8bbb6c70 100644 --- a/Assets/Scripts/Devices/Ble/Interfaces/IRowerCommonData.cs +++ b/Assets/Scripts/Devices/Ble/Interfaces/IRowerCommonData.cs @@ -12,5 +12,39 @@ namespace Assets.Scripts.Devices.Ble.Interfaces ushort PullValue { get; set; } double PeakDriveForce { get; set; } double AverageDriveForce { get; set; } + + /// + /// 划桨频率 + /// + uint StrokeRate { get; set; } + /// + /// 划桨次数 + /// + UInt16 StrokeCount { get; set;} + /// + /// 平均划桨频率 + /// + int AverageStrokeRate { get; set; } + UInt32 TotalDistance { get; set; } + /// + /// 即时配速 + /// + UInt16 InstantaneousPace { get; set; } + /// + /// 平均配速 + /// + UInt16 AveragePace { get; set; } + int InstantaneousPower { get; set; } + int AveragePower { get; set; } + int ElapsedTime { get; set; } + int TotalEnergy { get; set; } + + int EnergyPerHour { get; set; } + + int EnergyPerMinute { get; set; } + int ResistanceLevel { get; set; } + void Reset(); + event EventHandler StartEvent; + event EventHandler RowerResChanged; } } diff --git a/Assets/Scripts/Devices/Ble/Win/ServiceUuids.cs b/Assets/Scripts/Devices/Ble/Win/ServiceUuids.cs index 3cdd481a..adde6425 100644 --- a/Assets/Scripts/Devices/Ble/Win/ServiceUuids.cs +++ b/Assets/Scripts/Devices/Ble/Win/ServiceUuids.cs @@ -168,7 +168,7 @@ namespace Assets.Scripts.Ble new ServiceUuid(new Guid("6e40fec1-b5a3-f393-e0a9-e50e24dcca9e"), ServiceUuids.TacxBle, true), new ServiceUuid(new Guid("01007b34-3576-8b40-8918-8ff3949ce592"), ServiceUuids.Elite, true), new ServiceUuid(new Guid("3a01f4c0-37a8-6541-bab9-654ef70747c6"), ServiceUuids.PowerBeam, true), - //new ServiceUuid(new Guid("CE060000-43E5-11E4-916C-0800200C9A66"), ServiceUuids.C2Rower,true), + new ServiceUuid(new Guid("CE060000-43E5-11E4-916C-0800200C9A66"), ServiceUuids.C2Rower,true), }; public static readonly IReadOnlyList CyclingServices = ServiceUuids.Services.Where(s => s.IsCycling).ToList(); @@ -376,13 +376,17 @@ namespace Assets.Scripts.Ble public static Guid C2RowerControl = new Guid("ce060021-43e5-11e4-916c-0800200c9a66"); //0x35 有峰力值和均力值 - public static Guid C2RowerData = new Guid("ce060035-43e5-11e4-916c-0800200c9a66"); + public static Guid C2RowerData35 = new Guid("ce060035-43e5-11e4-916c-0800200c9a66"); //拉力曲线 - public static Guid C2RowerData1 = new Guid("ce06003D-43e5-11e4-916c-0800200c9a66"); + public static Guid C2RowerData3d = new Guid("ce06003D-43e5-11e4-916c-0800200c9a66"); //c2划船机状态 public static Guid C2RowerStatus = new Guid("ce060022-43e5-11e4-916c-0800200c9a66"); //c2划船机课程 public static Guid C2RowerCourse = new Guid("CE060031-43E5-11E4-916C-0800200C9A66"); + public static Guid C2RowerData32 = new Guid("CE060032-43E5-11E4-916C-0800200C9A66"); + public static Guid C2RowerData33 = new Guid("CE060033-43E5-11E4-916C-0800200C9A66"); + public static Guid C2RowerData36 = new Guid("CE060036-43E5-11E4-916C-0800200C9A66"); + public static Guid C2RowerData39 = new Guid("CE060039-43E5-11E4-916C-0800200C9A66"); public static Guid C2Service = new Guid("CE060030-43E5-11E4-916C-0800200C9A66"); //ce060030-43e5-11e4-916c-0800200c9a66 } diff --git a/Assets/Scripts/UI/Prefab/Panel/RowerHomeScript.cs b/Assets/Scripts/UI/Prefab/Panel/RowerHomeScript.cs index 0044f4ea..95609cc7 100644 --- a/Assets/Scripts/UI/Prefab/Panel/RowerHomeScript.cs +++ b/Assets/Scripts/UI/Prefab/Panel/RowerHomeScript.cs @@ -35,29 +35,30 @@ public class RowerHomeScript : PFUIPanel /// /// 划船机数据 /// - private FtmsRowerData RowerData + private IRowerCommonData RowerData { get { - var device = App.MainDeviceAdapter.GetDevices().FirstOrDefault(d => (d.State == DeviceState.Connected) && d.Sensor == SensorType.Rower); - if (device != null) - { - return ((IRowerDevice)device).rowerData; - } - return null; + return Rower != null ? (C2RowerData.IsEnabled == true ? (IRowerCommonData)Rower.c2RowerData : (IRowerCommonData)Rower.rowerData) : null; + //var device = App.MainDeviceAdapter.GetDevices().FirstOrDefault(d => (d.State == DeviceState.Connected) && d.Sensor == SensorType.Rower); + //if (device != null) + //{ + // return ((IRowerDevice)device).rowerData; + //} + //return null; } } protected override void OnDestroy() { Debug.Log("銷毀"); - if (RowerCommonDataInstance != null) + if (RowerData != null) { - RowerCommonDataInstance.PullChanged -= PaintPullCurve; + RowerData.PullChanged -= PaintPullCurve; + RowerData.StartEvent -= StartFunc; + RowerData.RowerResChanged -= ResChanged; } C2RowerData.EnableChanged -= ModeChanged; - FtmsRowerData.RowerResChanged -= ResChanged; - } private IRowerDevice Rower { @@ -89,7 +90,7 @@ public class RowerHomeScript : PFUIPanel GameObject btnStart; Transform left, bottom, mid,rmydata; float timer = 1.0f; - List pullList = new List(), historyPullList = new List(); + List pullList, historyPullList; public Dictionary spriteDict,spriteDict2; List records; List values; @@ -157,7 +158,10 @@ public class RowerHomeScript : PFUIPanel }; GetComponent().localScale = Vector3.one; GetComponent().localPosition = Vector3.zero; - + records = new List(); + values = new List(); + pullList = new List(); + historyPullList = new List(); //mainNav.ShowExit(); left = transform.Find("Rower/Modes/Scroll/M1/Left"); @@ -221,10 +225,6 @@ public class RowerHomeScript : PFUIPanel HandleSelectType(); },rowerType); }, false); - //var c2 = new NewMainNav.CustomButton(Resources.Load("Images/RowerNew/ICON_continue_44"), () => - //{ - // HandleStartOrPause(); - //}); btnStart = transform.Find("MainNav-mobile/Custom2").gameObject; var c3 = new NewMainNav.CustomButton(Resources.Load("Images/RowerNew/ICON_mode_44"), () => { @@ -243,10 +243,12 @@ public class RowerHomeScript : PFUIPanel { Discard(); }); - if (RowerCommonDataInstance != null) + if (RowerData != null) { - RowerCommonDataInstance.PullChanged -= PaintPullCurve; - RowerCommonDataInstance.PullChanged += PaintPullCurve; + RowerData.PullChanged -= PaintPullCurve; + RowerData.PullChanged += PaintPullCurve; + RowerData.StartEvent -= StartFunc; + RowerData.StartEvent += StartFunc; } Init(); } @@ -385,74 +387,11 @@ public class RowerHomeScript : PFUIPanel f.Invoke(); } } - private IRowerCommonData RowerCommonDataInstance => Rower != null ? (C2RowerData.IsEnabled == true ? (IRowerCommonData)Rower.c2RowerData : (IRowerCommonData)Rower.rowerData) : null; - private void HandleStartOrPause() - { - //UIManager.ShowRowerResult(); - //return; - if (rowerType == null) - { - Utils.showToast(null, "Please select the course!", isLowest: true); - return; - } - if (btnStart.CompareTag("Start")) - { -#if !UNITY_EDITOR - if (RowerData == null) - { - Utils.showToast(null, "Please connect the device!", isLowest: true); - return; - } -#endif - UIManager.ShowCountDownAnimation(() => - { -#if !UNITY_EDITOR - if (RowerCommonDataInstance != null) - { - RowerCommonDataInstance.PullChanged -= PaintPullCurve; - RowerCommonDataInstance.PullChanged += PaintPullCurve; - } -#endif - StartFunc(); - }, - ()=> - { - Debug.Log(222); - if (Rower != null && !isPause) - { - Rower.Reset(); - } - }); - } - else - { - openTimer = false; - isPause = true; - btnStart.GetComponent().sprite = spriteDict["Start"]; - btnStart.tag = "Start"; - UIManager.ShowConfirm3("Quit", "Do you want to keep the record?", - () => - { - UIManager.CloseConfirm3(); - Save(); - Init(); - }, - ()=> - { - Init(); - }, - ()=> - { - - }); - } - Debug.Log(RowerData); - //StartCoroutine(); - } int truelyTime = 0; - private void StartFunc() + private void StartFunc(object sender, EventArgs e) { + if (openTimer) return; if (transform.parent.parent.Find("ModalPanel/RowerWelldone(Clone)") && transform.parent.parent.Find("ModalPanel/RowerWelldone(Clone)").gameObject.activeInHierarchy) { return; @@ -602,8 +541,8 @@ public class RowerHomeScript : PFUIPanel left.Find("Times/Value").GetComponent().text = "---"; left.Find("Calories/Value").GetComponent().text = "---"; rmydata.Find("Calories/Value").GetComponent().text = "---"; - pullList = new List(); - historyPullList = new List(); + pullList.Clear(); + historyPullList.Clear(); SetChartData(pullList, historyPullList); //mid.Find("GraphChart").GetComponent().SetData(pullList); openTimer = false; @@ -638,8 +577,9 @@ public class RowerHomeScript : PFUIPanel rmydata.Find("AvgForce/Value").GetComponent().text = "---"; mid.Find("PeakForce/Value").GetComponent().text = "---"; rmydata.Find("PeakForce/Value").GetComponent().text = "---"; - records = new List(); - values = new List(); + + records.Clear();// = new List(); + values.Clear(); //= new List(); Kj = 0; x = 0; seconds = 0; @@ -651,8 +591,13 @@ public class RowerHomeScript : PFUIPanel #endif C2RowerData.EnableChanged -= ModeChanged; C2RowerData.EnableChanged += ModeChanged; - FtmsRowerData.RowerResChanged -= ResChanged; - FtmsRowerData.RowerResChanged += ResChanged; + if (RowerData != null) + { + RowerData.RowerResChanged -= ResChanged; + RowerData.RowerResChanged += ResChanged; + } + //FtmsRowerData.RowerResChanged -= ResChanged; + //FtmsRowerData.RowerResChanged += ResChanged; //标志线复位 Transform leftLine = transform.Find("Rower/Modes/Scroll/M2/Track/TraceContainer/LineMeterLeft"), rightLine = transform.Find("Rower/Modes/Scroll/M2/Track/TraceContainer/LineMeterRight"), @@ -660,14 +605,22 @@ public class RowerHomeScript : PFUIPanel leftLine.localPosition = new Vector3(-207.5f+43, leftLine.localPosition.y, leftLine.localPosition.z); rightLine.localPosition = new Vector3(164.5f+43, rightLine.localPosition.y, rightLine.localPosition.z); finishLine.localPosition = new Vector3(-237.5f+43, finishLine.localPosition.y, finishLine.localPosition.z); + + + Resources.UnloadUnusedAssets(); + GC.Collect(); } private void ModeChanged(object sender, EventArgs e) { - if (RowerCommonDataInstance != null) + if (RowerData != null) { - RowerCommonDataInstance.PullChanged -= PaintPullCurve; - RowerCommonDataInstance.PullChanged += PaintPullCurve; + RowerData.PullChanged -= PaintPullCurve; + RowerData.PullChanged += PaintPullCurve; + RowerData.StartEvent -= StartFunc; + RowerData.StartEvent += StartFunc; + RowerData.RowerResChanged -= ResChanged; + RowerData.RowerResChanged += ResChanged; } slider.GetComponent().interactable = !(bool)sender; transform.Find("ResBar/BtnSub").GetComponent