fix(scanqr,homepagecharts): 修复并优化多处代码逻辑

1. 移除iOS端多余的对焦维护协程,简化相机对焦逻辑
2. 为首页图表初始化添加异常捕获,避免崩溃
3. 修复图表数据越界访问问题,修正switch分支缩进错误
This commit is contained in:
“虞渠成” 2026-09-01 16:51:58 +08:00
parent 432b80dfa3
commit 736fb1af04
2 changed files with 19 additions and 29 deletions

View File

@ -225,9 +225,8 @@ namespace Kill.UI.Pages
#if UNITY_IOS && !UNITY_EDITOR
// iOS: 通过原生插件开启连续自动对焦autoFocusPoint 在 iOS 无效)
// iOS 系统会自动维持对焦状态,无需周期触发
_EnableContinuousAutoFocus();
// 周期维护对焦:每 3s 触发一次点对焦(无黑屏),让镜头持续对焦
StartCoroutine(IOsFocusMaintainCoroutine());
#elif UNITY_ANDROID && !UNITY_EDITOR
// AndroidWebCamTexture 默认不会自动对焦,需主动通过 Camera API 触发
EnableAndroidContinuousAutoFocus();
@ -328,25 +327,6 @@ namespace Kill.UI.Pages
Debug.Log($"[ScanQRcode] 预览调整 - 相机: {cameraWidth}x{cameraHeight}, 预览: {previewWidth}x{previewHeight}");
}
#if UNITY_IOS && !UNITY_EDITOR
/// <summary>
/// iOS 对焦维护协程 — 每 3s 触发一次点对焦(无黑屏),让镜头持续重新对焦
/// 与 Android softTrigger 策略保持一致
/// </summary>
private IEnumerator IOsFocusMaintainCoroutine()
{
// 首次等待 3s 让初始对焦完成
yield return new WaitForSeconds(3f);
while (isScanning)
{
// 触发一次点对焦无黑屏1.5s 后原生会自动恢复连续对焦
_TriggerContinuousRefocus();
yield return new WaitForSeconds(3f);
}
}
#endif
#if UNITY_ANDROID && !UNITY_EDITOR
/// <summary>
/// 启用 Android 自动对焦。

View File

@ -26,10 +26,20 @@ namespace Kill.UI.Pages
public async Task Init()
{
LoadingUI.Show();
try
{
await GetKillCount();
await GetKillRecords();
}
catch (Exception e)
{
Debug.LogError($"[HomePageChartsCtrl] Init 异常: {e}");
}
finally
{
LoadingUI.Hide();
}
}
public Text totalText;
public async Task GetKillCount()
@ -49,7 +59,7 @@ namespace Kill.UI.Pages
List<int> daily = new List<int>();
for (int i = 0; i <24; i++)
{
if(data.data.stats.Count>0)
if(i < data.data.stats.Count)
daily.Add(data.data.stats[i].count);
else
daily.Add(0);
@ -60,7 +70,7 @@ namespace Kill.UI.Pages
List<int> weekly = new List<int>();
for (int i = 0; i <7; i++)
{
if(data.data.stats.Count>0)
if(i < data.data.stats.Count)
weekly.Add(data.data.stats[i].count);
else
weekly.Add(0);
@ -71,7 +81,7 @@ namespace Kill.UI.Pages
List<int> monthly = new List<int>();
for (int i = 0; i <31; i++)
{
if(data.data.stats.Count>0)
if(i < data.data.stats.Count)
monthly.Add(data.data.stats[i].count);
else
monthly.Add(0);
@ -82,7 +92,7 @@ namespace Kill.UI.Pages
List<int> annual = new List<int>();
for (int i = 0; i <12; i++)
{
if(data.data.stats.Count>0)
if(i < data.data.stats.Count)
annual.Add(data.data.stats[i].count);
else
annual.Add(0);