This commit is contained in:
2025-05-09 13:42:17 +08:00
parent f84cb9cb45
commit a44a2c8a0b
@@ -209,6 +209,14 @@ public class LakeLineDrawer : ImmediateModeShapeDrawer
{
if (targetButtonPrefab == null || targetButtonsParent == null) return;
// 如果按钮已经存在,直接显示
if (targetButtons.ContainsKey(target))
{
targetButtons[target].gameObject.SetActive(true);
return;
}
// 创建新按钮
var buttonObj = Instantiate(targetButtonPrefab, targetButtonsParent);
var button = buttonObj.GetComponent<Button>();
@@ -216,7 +224,7 @@ public class LakeLineDrawer : ImmediateModeShapeDrawer
var text = buttonObj.GetComponentInChildren<Text>();
if (text != null)
{
text.text = string.IsNullOrEmpty(target.name) ? $"目标 {targetPoints.IndexOf(target) + 1}" : target.name;
text.text = string.IsNullOrEmpty(target.name) ? "目标" : target.name;
}
// 设置按钮颜色
@@ -233,6 +241,26 @@ public class LakeLineDrawer : ImmediateModeShapeDrawer
targetButtons[target] = button;
}
private void MoveToTarget(TargetPoint target)
{
float step = fieldSize / (pointCount - 1);
float halfField = fieldSize * 0.5f;
float halfVisible = visibleAreaSize * 0.5f;
// 计算目标的世界坐标
float targetX = -halfField + target.gridPosition.x * step;
float targetZ = -halfField + target.gridPosition.y * step;
// 设置相机位置,使目标在视野中心
fieldOffset.x = -targetX;
fieldOffset.y = -targetZ;
// 确保不会超出边界
float maxOffset = fieldSize * 0.5f - halfVisible * 0.8f;
fieldOffset.x = Mathf.Clamp(fieldOffset.x, -maxOffset, maxOffset);
fieldOffset.y = Mathf.Clamp(fieldOffset.y, -maxOffset, maxOffset);
}
private void ClearTargetButtons()
{
// 清除所有目标按钮