Files
aibis-dream/Assets/Scripts/MiniGame/HuoShan/SalesSystem/SalesManager.cs
T
bottlefishandClaude Code cdeae42efb feat: 添加归档系统和销售系统基础
- 新增Archive相关资源和预制体
- 新增SalesSystem销售系统基础
- 添加火山美术资源文件夹

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-02-11 18:25:50 +08:00

168 lines
4.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using UnityEngine;
using Cinemachine;
using AibisDream.FixSystem;
using AibisDream.Framework;
using System.Collections.Generic;
namespace AibisDream.MiniGame.Language
{
/// <summary>
/// 销售系统管理器
/// </summary>
public class SalesManager : MonoBehaviour
{
[Header("UI配置")]
[Tooltip("销售系统主视图对象(会自动查找名为'SaleView'的子对象)")]
[SerializeField] private GameObject saleView;
[Header("相机配置")]
[Tooltip("主销售相机")]
[SerializeField] private CameraEnum mainCamera = CameraEnum.SaleCamera;
[Tooltip("深度销售相机(可选)")]
[SerializeField] private CameraEnum deepCamera = CameraEnum.SaleDeepCamera;
private readonly List<CameraEnum> registeredCameras = new();
private void Start()
{
RegisterToSystem();
RegisterCameras();
FindSaleView();
}
private void OnDestroy()
{
UnregisterCameras();
}
/// <summary>
/// 查找销售视图(按名字"SaleView"
/// </summary>
private void FindSaleView()
{
if (saleView == null)
{
Transform viewTransform = transform.Find("SaleView");
if (viewTransform != null)
{
saleView = viewTransform.gameObject;
Debug.Log("[SalesManager] 找到 SaleView");
}
else
{
Debug.LogWarning("[SalesManager] 未找到名为 'SaleView' 的子对象");
}
}
// 初始时隐藏视图
if (saleView != null)
{
saleView.SetActive(false);
}
}
/// <summary>
/// 注册到系统字典
/// </summary>
private void RegisterToSystem()
{
FixSystemCenter.SystemDic.Register(this);
}
/// <summary>
/// 注册所有相机到CameraKit
/// </summary>
private void RegisterCameras()
{
if (CameraKit.Instance == null)
{
Debug.LogError("[SalesManager] CameraKit.Instance 为 null,无法注册相机!");
return;
}
// 获取所有相机
var virtualCams = GetComponentsInChildren<ICinemachineCamera>();
if (virtualCams.Length == 0)
{
Debug.LogWarning("[SalesManager] 未找到任何 ICinemachineCamera 组件!");
return;
}
// 注册主相机
if (virtualCams.Length > 0)
{
CameraKit.Instance.RegisterCamera(mainCamera, virtualCams[0]);
registeredCameras.Add(mainCamera);
Debug.Log($"[SalesManager] 成功注册主相机: {mainCamera}");
}
// 注册深度相机(如果有)
if (virtualCams.Length > 1)
{
CameraKit.Instance.RegisterCamera(deepCamera, virtualCams[1]);
registeredCameras.Add(deepCamera);
Debug.Log($"[SalesManager] 成功注册深度相机: {deepCamera}");
}
}
/// <summary>
/// 从CameraKit注销所有相机
/// </summary>
private void UnregisterCameras()
{
if (CameraKit.Instance == null) return;
foreach (var cameraType in registeredCameras)
{
CameraKit.Instance.UnRegisterCamera(cameraType);
Debug.Log($"[SalesManager] 已注销相机: {cameraType}");
}
registeredCameras.Clear();
}
/// <summary>
/// 打开销售系统界面
/// </summary>
public void OpenView()
{
gameObject.SetActive(true);
if (saleView != null)
{
saleView.SetActive(true);
Debug.Log("[SalesManager] 销售系统已打开");
}
else
{
Debug.LogError("[SalesManager] SaleView 未找到,无法打开销售界面");
}
}
/// <summary>
/// 关闭销售系统界面
/// </summary>
public void CloseView()
{
if (saleView != null)
{
saleView.SetActive(false);
}
gameObject.SetActive(false);
Debug.Log("[SalesManager] 销售系统已关闭");
}
/// <summary>
/// 初始化销售系统
/// </summary>
public void Initialize()
{
Debug.Log("[SalesManager] 初始化销售系统");
// 这里添加初始化逻辑
}
}
}