- 新增Archive相关资源和预制体 - 新增SalesSystem销售系统基础 - 添加火山美术资源文件夹 Co-Authored-By: Claude Code <noreply@anthropic.com>
168 lines
4.8 KiB
C#
168 lines
4.8 KiB
C#
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] 初始化销售系统");
|
||
// 这里添加初始化逻辑
|
||
}
|
||
}
|
||
}
|