地图初步
This commit is contained in:
85
Assets/Scripts/MainGame/GameRun/Map/Zone/SpawnPoint.cs
Normal file
85
Assets/Scripts/MainGame/GameRun/Map/Zone/SpawnPoint.cs
Normal file
@@ -0,0 +1,85 @@
|
||||
using System;
|
||||
using Sirenix.OdinInspector;
|
||||
using UnityEngine;
|
||||
|
||||
#if UNITY_EDITOR
|
||||
using Sirenix.Utilities.Editor;
|
||||
using UnityEditor;
|
||||
#endif
|
||||
|
||||
namespace Cielonos.MainGame.Map
|
||||
{
|
||||
public partial class SpawnPoint : MonoBehaviour
|
||||
{
|
||||
[HorizontalGroup("SpawnPointInfo", 0.5f)]
|
||||
[LabelText("Identification")]
|
||||
public string groupName = "Default";
|
||||
|
||||
[HorizontalGroup("SpawnPointInfo", 0.2f, MarginLeft = 0.05f), ReadOnly, HideLabel]
|
||||
[SerializeField] private int index = -1;
|
||||
public int Index => index;
|
||||
|
||||
[HorizontalGroup("SpawnPointInfo", 0.1f, MarginLeft = 0.05f), Button(Icon = SdfIconType.Command), HideLabel]
|
||||
public void Refresh()
|
||||
{
|
||||
ZoneManager.Instance.RebuildMapData();
|
||||
}
|
||||
|
||||
private void OnDrawGizmos()
|
||||
{
|
||||
Color color = Color.white;
|
||||
if (MapBaseCollection.Instance != null)
|
||||
{
|
||||
color = MapBaseCollection.Instance.GetGroupColor(groupName);
|
||||
}
|
||||
|
||||
Gizmos.color = color;
|
||||
Gizmos.DrawSphere(transform.position, 0.25f);
|
||||
|
||||
//Draw Direction
|
||||
Vector3 forward = transform.forward * 0.25f;
|
||||
Gizmos.DrawCube(transform.position + forward, new Vector3(0.1f, 0.1f, 0.25f));
|
||||
|
||||
#if UNITY_EDITOR
|
||||
// Draw text label using Handles - automatically faces camera
|
||||
string text = $"{groupName}_{index}";
|
||||
|
||||
// Create a custom style if needed, or use default skin
|
||||
GUIStyle style = new GUIStyle();
|
||||
style.normal.textColor = color;
|
||||
|
||||
float distance = Vector3.Distance(SceneView.lastActiveSceneView.camera.transform.position, transform.position);
|
||||
|
||||
if (distance > 100f)
|
||||
{
|
||||
return; // 太远了不显示
|
||||
}
|
||||
|
||||
float sizeFactor = Mathf.Clamp(100 / distance, 0.2f, 1f);
|
||||
style.fontSize = Mathf.RoundToInt(10 * sizeFactor);
|
||||
style.fontStyle = FontStyle.Bold;
|
||||
style.alignment = TextAnchor.MiddleCenter;
|
||||
Handles.Label(transform.position + Vector3.up * 0.5f, text, style);
|
||||
#endif
|
||||
}
|
||||
|
||||
// 被 Manager 调用
|
||||
public void SetData(int newIndex)
|
||||
{
|
||||
index = newIndex;
|
||||
|
||||
#if UNITY_EDITOR
|
||||
UnityEditor.EditorUtility.SetDirty(this);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
public partial class SpawnPoint
|
||||
{
|
||||
public void GetTransform(out Vector3 position, out Quaternion rotation)
|
||||
{
|
||||
position = transform.position;
|
||||
rotation = transform.rotation;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user