This commit is contained in:
2026-09-28 02:32:57 +08:00
parent 829860ab8b
commit 6662fe9aed
3 changed files with 41 additions and 9 deletions
@@ -7,6 +7,7 @@ using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
using System;
using System.Globalization;
[Serializable]
public class MonsterMoveLine
{
@@ -60,9 +61,17 @@ public class MonsterMoveLine
List<Vector2> points = new List<Vector2>();
for (int i = 1; i < parts.Length; i++)
{
points.Add(ParseVector(parts[i]));
if (string.IsNullOrWhiteSpace(parts[i]))
continue;
// ⭐ 单点格式错误只跳过该点并告警,不能让整条路线(乃至进房加载流程)中断
if (TryParseVector(parts[i], out var p))
points.Add(p);
else
Debug.LogWarning($"[MonsterMoveLine] 坐标格式非法已跳过: '{parts[i]}'({handle.Result.name} 曲线 {curve.name})");
}
if (points.Count == 0) continue;
curve.start = points[0];
if (points.Count > 1)
curve.end = points[points.Count - 1];
@@ -189,7 +198,17 @@ public class MonsterMoveLine
for (int i = 1; i < parts.Length; i++)
{
if (!string.IsNullOrWhiteSpace(parts[i]))
points.Add(ParseVector(parts[i]));
{
// ⭐ 单点格式错误只跳过该点并告警,不能让整条路线(乃至进房加载流程)中断
if (TryParseVector(parts[i], out var p))
{
points.Add(p);
}
else
{
Debug.LogWarning($"[MonsterMoveLine] 坐标格式非法已跳过: '{parts[i]}'({text.name} 曲线 {curve.name})");
}
}
}
if (points.Count == 0)
@@ -244,10 +263,16 @@ public class MonsterMoveLine
_curveKnotArrays.Clear();
}
private static Vector2 ParseVector(string s)
private static bool TryParseVector(string s, out Vector2 v)
{
v = default;
var xy = s.Split(',');
return new Vector2(float.Parse(xy[0]), float.Parse(xy[1]));
if (xy.Length < 2) return false;
// ⭐ 固定用 InvariantCulture:曲线文件是 "x,y" 机器格式,不能受设备区域的小数点符号影响
if (!float.TryParse(xy[0], NumberStyles.Float, CultureInfo.InvariantCulture, out float x)) return false;
if (!float.TryParse(xy[1], NumberStyles.Float, CultureInfo.InvariantCulture, out float y)) return false;
v = new Vector2(x, y);
return true;
}
public BezierCurveData bezierCurveData;
@@ -1,4 +1,4 @@
小丑扑克1;-555.8911,862.1623;-605.461,603.6906;-573.5946,359.3818;-481.53622,157.5615;-308.04156,-33.636723;-88.517685,-125.695114;116.843346,-182.34644;258.47165,-210.6721;396.55923,-221.29422;531.10614,-217.75351;658.5716,-214.2128;747.0893,-210.6721;846.2291,-203.59068;927.66534,-203.59068;1023.26447,-196.50926;1140.1078,-185.88715;1359.6317,-164.6429
小丑扑克1;-555.8911,862.1623;-605.461,603.6906;-573.5946,359.3818;-481.53622,157.5615;-308.04156,-33.636723;-88.517685,-125.695114;116.843346,-182.34644;258.47165,-210.6721;396.55923,-221.29422;531.10614,-217.75351;658.5716,-214.2128;747.0893,-210.6721;846.2291,-203.59068;927.66534,-203.59068;1023.26447,-196.50926;1140.1078,-185.88715;1359.6317,-164.6429
小丑扑克2;697.5194,915.2729;740.0079,621.39417;672.73444,316.8933;393.01852,115.073;240.76811,23.014599;131.00618,-37.17743;-3.5407076,-83.20663;-120.384056,-118.6137;-251.39023,-150.48007;-364.69287,-168.18361;-467.37338,-171.72432;-591.29816,-175.26503;-672.73444,-171.72432;-757.7114,-157.5615;-839.1477,-132.77654;-952.4503,-97.36945;-1055.1309,-65.50309;-1154.2706,-30.096014;-1278.1954,5.3110614
小丑扑克3;-1304.3854,-62.807915;-1053.1538,-58.321632;-857.65283,-59.476074;-674.9596,-56.866173;-490.96136,-54.25627;-310.87802,-52.951317;-139.92928,-46.42655;-36.838074,-49.036453;64.94818,-45.121597;168.03937,-41.20674;269.8256,-38.596832;345.51282,-37.291878;401.62573,-35.98693;456.43372,-35.98693;545.1705,-34.681976;623.4676,-32.072075;701.7647,-32.072075;786.58655,-28.157219;871.40845,-29.462166;982.32935,-30.76712;1076.2859,-33.37702;1183.292,-34.681976;1352.9357,-33.37702
黑洞飞船1;-407.18137,876.32513;-410.72208,713.4526;-414.2628,554.1207;-421.3442,377.08536;-428.4256,242.53847;-435.50702,107.99158;-449.66986,-12.392476;-308.04156,-19.473892;-166.41325,-19.473892;-67.273445,-12.392476;35.407074,-15.933184;131.00618,-8.8517685;201.82033,-8.8517685;276.1752,-5.3110614;350.53006,-5.3110614;428.4256,-5.3110614;509.86188,-5.3110614;566.5132,-1.7703538;612.5424,1.7703538;679.81586,5.3110614;729.38574,5.3110614;775.415,8.8517685;832.0663,8.8517685;899.3397,8.8517685;963.07245,8.8517685;1040.968,12.392476;1125.945,1.7703538;1218.0034,5.3110614;1295.8989,1.7703538;1359.6317,1.7703538
@@ -6,7 +6,7 @@
黑洞飞船3;-1302.9803,-423.11456;-1086.9972,-370.00394;-909.96185,-313.35263;-736.46716,-242.53847;-577.1353,-182.34644;-435.50702,-132.77654;-311.58228,-86.74734;-219.52386,-44.258842;-123.92477,-1.7703538;-21.244246,40.718136;84.97698,93.82875;173.49467,132.77654;262.01236,178.80573;368.23358,214.2128;449.66986,256.7013;524.0247,288.56766;605.461,323.97473;701.0601,359.3818;814.36273,416.03314;934.74677,465.60303;1033.8866,518.7137;1218.0034,621.39417;1288.8175,663.8827
弹药箱1;-1281.7361,-107.99158;-1104.7008,-104.450874;-955.991,-107.99158;-821.44415,-111.53229;-701.0601,-104.450874;-570.0539,-100.910164;-396.55923,-90.28804;-247.84953,-83.20663;-138.0876,-86.74734;-24.784952,-86.74734;56.65132,-79.66592;162.87254,-83.20663;251.39023,-76.12521;332.8265,-76.12521;417.8035,-69.0438;509.86188,-69.0438;609.0017,-69.0438;711.6822,-69.0438;789.57776,-69.0438;931.20605,-69.0438;1065.7529,-72.5845;1179.0557,-72.5845;1356.091,-72.5845
弹药箱2;1349.0095,-83.20663;1221.5441,-86.74734;1072.8344,-90.28804;955.991,-90.28804;800.1999,-97.36945;630.246,-86.74734;467.37338,-86.74734;378.8557,-86.74734;283.2566,-86.74734;166.41325,-90.28804;49.569904,-93.82875;-74.35486,-86.74734;-169.95396,-83.20663;-247.84953,-83.20663;-361.15216,-83.20663;-456.75128,-83.20663;-548.8097,-83.20663;-679.81586,-86.74734;-757.7114,-93.82875;-849.76984,-90.28804;-987.8574,-93.82875;-1189.6777,-97.36945;-1292.3583,-97.36945
弹药箱3;9-1210.922,844.45874;-1200.2998,632.0163;-1058.6715,444.3588;-885.1769,334.59686;-701.0601,242.53847;-516.9433,164.6429;-339.90793,111.53229;-159.33183,58.421673;14.16283,15.933184;148.70972,-19.473892;269.09378,-65.50309;364.69287,-100.910164;453.21057,-132.77654;541.7283,-164.6429;637.32733,-192.96857;736.46716,-221.29422;803.7406,-235.45705;924.1247,-260.242;1023.26447,-281.48624;1157.8114,-309.81192;1306.5211,-334.59686;1373.7946,-345.219
弹药箱3;-1210.922,844.45874;-1200.2998,632.0163;-1058.6715,444.3588;-885.1769,334.59686;-701.0601,242.53847;-516.9433,164.6429;-339.90793,111.53229;-159.33183,58.421673;14.16283,15.933184;148.70972,-19.473892;269.09378,-65.50309;364.69287,-100.910164;453.21057,-132.77654;541.7283,-164.6429;637.32733,-192.96857;736.46716,-221.29422;803.7406,-235.45705;924.1247,-260.242;1023.26447,-281.48624;1157.8114,-309.81192;1306.5211,-334.59686;1373.7946,-345.219
爆裂金鲨1;-1278.1954,5.3110614;-1118.8635,5.3110614;-973.6946,1.7703538;-867.4733,1.7703538;-782.49634,1.7703538;-683.35657,-1.7703538;-552.3504,-1.7703538;-446.12915,-1.7703538;-346.98935,1.7703538;-244.30882,1.7703538;-131.00618,5.3110614;0,8.8517685;116.843346,5.3110614;233.68669,5.3110614;332.8265,5.3110614;424.88492,5.3110614;516.9433,5.3110614;619.62384,5.3110614;704.60077,12.392476;810.822,8.8517685;899.3397,8.8517685;1023.26447,8.8517685;1214.4626,8.8517685;1366.7131,8.8517685
爆裂金鲨2;1377.3352,-93.82875;1182.5963,-97.36945;1062.2123,-97.36945;924.1247,-97.36945;732.92645,-104.450874;626.70526,-93.82875;481.53622,-93.82875;311.58228,-97.36945;184.11679,-97.36945;53.110615,-93.82875;-131.00618,-93.82875;-254.93094,-90.28804;-375.315,-93.82875;-509.86188,-86.74734;-658.5716,-86.74734;-793.11847,-83.20663;-938.2875,-90.28804;-1076.3751,-90.28804;-1267.5732,-97.36945
爆裂金鲨3;-1288.8175,-104.450874;-1111.7822,-111.53229;-955.991,-107.99158;-842.6884,-107.99158;-725.84503,-107.99158;-584.21674,-107.99158;-449.66986,-107.99158;-322.20438,-111.53229;-208.90175,-111.53229;-77.89557,-104.450874;3.5407076,-100.910164;159.33183,-100.910164;226.60529,-100.910164;325.7451,-100.910164;442.58844,-100.910164;545.269,-107.99158;669.1937,-100.910164;754.1707,-100.910164;860.3919,-97.36945;977.2353,-97.36945;1048.0494,-97.36945;1133.0264,-90.28804;1228.6255,-86.74734;1334.8468,-86.74734;1391.498,-86.74734
@@ -3810,22 +3810,28 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
// 这里不再插手,否则"死一条鱼会导致三个锁定目标全部重新寻找"
if (currSitData.tripleLockTargets.Count > 0) return;
/* ==================== 立即升级版本(2026-09-28 注释保留,方便回退) ====================
// 目标活着时也做"优先级升级":场上出现更高优先级的鱼 → 立即抢过来锁定
// ⭐⭐⭐ 换目标规则(当前使用:立即升级版):
// ① 手动锁定 → 玩家自己点的鱼,离场前一直跟,死了才换
// ② 自动锁定,路径在可锁范围(0.1~0.9) → 保持锁定;
// 但场上出现严格更高优先级的鱼时立即切换过去
// ③ 自动锁定,路径离场(超出 0.1~0.9) 或 被 SuoDing 取消勾选 → 落到下面重新找目标
if (currSitData.isLock &&
currSitData.monCotl_Lock != null &&
currSitData.monCotl_Lock.gameObject.activeInHierarchy)
{
// 手动锁定:死了才转换(玩家自己点的鱼,不受白名单限制)
if (currSitData.isManualLock) return;
if (IsFishPathLockable(currSitData.monCotl_Lock)
&& IsFishAllowedBySuoDing(currSitData.monCotl_Lock))
{
// 当前目标仍有效且在白名单内 → 没有更高优先级目标就保持锁定,有就落到下面切换
if (!HasHigherPriorityTarget(currSitData.monCotl_Lock)) return;
}
// 当前目标离场(超出 0.1~0.9) 或 被取消勾选(不在白名单) → 落到下面重新找目标
}
==================== 立即升级版本结束 ==================== */
/* ==================== 不立即抢版本(2026-09-28 注释保留,方便回退) ====================
// ⭐⭐⭐ 换目标规则:
// ① 手动锁定 → 玩家自己点的鱼,离场前一直跟,死了才换
// ② 自动锁定,路径仍在可锁范围(0.1~0.9) → 保持锁定
@@ -3842,6 +3848,7 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
return;
// 路径离场 / 不在白名单 → 重新找目标
}
==================== 不立即抢版本结束 ==================== */
// 当前锁定目标已死亡/失效 → 自动找下一个目标
MonsterContral target = FindAutoLockTarget();