refactor():重构编辑系统,不再需要添加额外的脚本作为可编辑的入口了
This commit is contained in:
@@ -12,11 +12,11 @@ namespace Script.Gameplay.Player
|
||||
[SerializeField] private FirstPersonRaycaster raycaster; // 新增:第一人称射线检测器
|
||||
public bool IsEnableEditing = true; // 是否启用编辑功能
|
||||
private bool isEditing = false; // 当前是否处于编辑状态
|
||||
public event Action<IEditable> OnBeginEditTarget;
|
||||
public event Action<IEditable> OnEndEditTarget;
|
||||
public event Action<GameObject> OnBeginEditTarget;
|
||||
public event Action<GameObject> OnEndEditTarget;
|
||||
|
||||
private IEditable currentTarget; // 射线命中的当前可编辑对象(用于按键交互)
|
||||
private IEditable previousGazedTarget; // 上一次注视的对象(用于注视进入/离开事件)
|
||||
private GameObject currentTarget; // 射线命中的当前可编辑对象(用于按键交互)
|
||||
private GameObject previousGazedTarget; // 上一次注视的对象(用于注视进入/离开事件)
|
||||
|
||||
private InputManager inputManager;
|
||||
|
||||
@@ -43,20 +43,27 @@ namespace Script.Gameplay.Player
|
||||
void DetectInteractable()
|
||||
{
|
||||
if (raycaster == null) return;
|
||||
|
||||
GameObject lookAtObj = raycaster.CurrentLookAtObject;
|
||||
IEditable hitEditable = lookAtObj != null ? lookAtObj.GetComponent<IEditable>() : null;
|
||||
|
||||
if(lookAtObj == null) return;
|
||||
|
||||
GameObject hitEditable = null;
|
||||
if (lookAtObj.GetComponent<IEditableComponent>() != null)
|
||||
{
|
||||
hitEditable = lookAtObj;
|
||||
}
|
||||
|
||||
// 如果命中对象与之前注视的不一样,触发进入/离开事件
|
||||
if (hitEditable != previousGazedTarget)
|
||||
{
|
||||
if (previousGazedTarget != null)
|
||||
{
|
||||
previousGazedTarget.OnGazeExit(this);
|
||||
// previousGazedTarget.OnGazeExit(this);
|
||||
}
|
||||
|
||||
if (hitEditable != null)
|
||||
{
|
||||
hitEditable.OnGazeEnter(this);
|
||||
// hitEditable.OnGazeEnter(this);
|
||||
}
|
||||
|
||||
previousGazedTarget = hitEditable;
|
||||
@@ -65,11 +72,6 @@ namespace Script.Gameplay.Player
|
||||
currentTarget = hitEditable;
|
||||
}
|
||||
|
||||
public IEditable GetCurrentTarget()
|
||||
{
|
||||
return currentTarget;
|
||||
}
|
||||
|
||||
private void EditTarget()
|
||||
{
|
||||
if (isEditing)
|
||||
|
Reference in New Issue
Block a user