using UnityEngine; using AibisDream; using AibisDream.FixSystem; using Cinemachine; using AibisDream.Framework; using AibisDream.Kit; using UnityEditor.Localization.Plugins.XLIFF.V12; namespace AibisDream { public class CuttingManager : MonoBehaviour { [Header("切割组件")] public GameObject gearFollowerPrefab; private GearFollower gearFollower; private bool isCuttingMode = false; private BodyModule _targetModule; private SpriteRenderer _targetSpriteRenderer; private void Awake() { // 注册 FixSystemCenter.SystemDic.Register(this); var virtualCam1 = transform.Find("Cut Emo Camera").GetComponent(); var virtualCam2 = transform.Find("Cut Memory Camera").GetComponent(); var virtualCam3 = transform.Find("Cut Logic Camera").GetComponent(); var virtualCam4 = transform.Find("Cut Emo Deep Camera").GetComponent(); var virtualCam5 = transform.Find("Cut Memory Deep Camera").GetComponent(); var virtualCam6 = transform.Find("Cut Logic Deep Camera").GetComponent(); CameraKit.Instance.RegisterCamera(CameraEnum.CutEmo, virtualCam1); CameraKit.Instance.RegisterCamera(CameraEnum.CutMemory, virtualCam2); CameraKit.Instance.RegisterCamera(CameraEnum.CutLogic, virtualCam3); CameraKit.Instance.RegisterCamera(CameraEnum.CutEmoDeep, virtualCam4); CameraKit.Instance.RegisterCamera(CameraEnum.CutMemoryDeep, virtualCam5); CameraKit.Instance.RegisterCamera(CameraEnum.CutLogicDeep, virtualCam6); } private void Update() { if (isCuttingMode && gearFollower != null) { gearFollower.GearUpdate(); } } public void StartCutting(BodyModule targetModule) { // 检查参数 if (targetModule == null) { Debug.LogError("targetModule 为空"); return; } // 保存目标模块 _targetModule = targetModule; // 获取目标精灵渲染器 _targetSpriteRenderer = targetModule.GetCutSpriteRenderer(); if (_targetSpriteRenderer == null) { Debug.LogError("targetSprite 为空"); return; } // 停止之前的切割 StopCutting(); // 设置切割模式 isCuttingMode = true; // 创建GearFollower Vector3 SpawnPosition = new Vector3(Screen.width / 2f, Screen.height / 4f, 0); GameObject gearFollowerObj = Instantiate(gearFollowerPrefab, SpawnPosition, Quaternion.identity); gearFollower = gearFollowerObj.GetComponent(); gearFollower.Init(_targetSpriteRenderer); } public void OnCutComplete() { isCuttingMode = false; if (gearFollower != null) { gearFollower.FinishCutting(); } } public void UpdateModule() { if (_targetModule != null) { _targetModule.OnCuttingDown(); } } public void StopCutting() { isCuttingMode = false; if (gearFollower != null) { Destroy(gearFollower.gameObject); gearFollower = null; } } } }