feat(HidePlatform): 实现通过信号控制的隐藏平台

This commit is contained in:
2025-10-25 09:38:50 +08:00
parent 24f6a95421
commit f547cc2ac5
5 changed files with 628 additions and 1 deletions

View File

@@ -0,0 +1,76 @@
using System;
using UnityEngine;
using Script.Gameplay.Edit;
namespace Script.Gameplay.Facility
{
[RequireComponent(typeof(ColliderEditableController))]
[RequireComponent(typeof(MeshRenderEditableController))]
public class HidePlatformController : BaseFacilityController
{
public enum DisappearType
{
ReceiveSignal,
NoReceiveSignal
}
[Tooltip("平台消失的类型")]
[SerializeField] private DisappearType disappearType;
private ColliderEditableController colliderEditableController;
private MeshRenderEditableController meshRenderEditableController;
private void Awake()
{
colliderEditableController = GetComponent<ColliderEditableController>();
meshRenderEditableController = GetComponent<MeshRenderEditableController>();
}
private void Start()
{
if (disappearType == DisappearType.NoReceiveSignal)
{
colliderEditableController.IsOpenInEditor = true;
meshRenderEditableController.IsOpenInEditor = true;
}
if (disappearType == DisappearType.ReceiveSignal)
{
colliderEditableController.IsOpenInEditor = false;
meshRenderEditableController.IsOpenInEditor = false;
}
}
public override void OnSignalReceived(bool active, GameObject sender)
{
base.OnSignalReceived(active, sender);
if (disappearType == DisappearType.ReceiveSignal)
{
if (active)
{
meshRenderEditableController.IsOpenInEditor = true;
colliderEditableController.IsOpenInEditor = true;
}
else
{
meshRenderEditableController.IsOpenInEditor = false;
colliderEditableController.IsOpenInEditor = false;
}
}
if (disappearType == DisappearType.NoReceiveSignal)
{
if (active)
{
meshRenderEditableController.IsOpenInEditor = false;
colliderEditableController.IsOpenInEditor = false;
}
else
{
meshRenderEditableController.IsOpenInEditor = true;
colliderEditableController.IsOpenInEditor = true;
}
}
}
}
}