tào lao bí đao

This commit is contained in:
2026-04-02 08:54:19 +07:00
parent a50209b05c
commit 7521850a56
715 changed files with 5210 additions and 10 deletions

View File

@@ -1,25 +1,71 @@
using UnityEngine;
using System.Collections.Generic;
namespace OnlyScove.Scripts
{
public class LampInteractable : BaseInteractable
{
[SerializeField] private Light targetLight;
[Header("Light Settings")] [SerializeField]
private List<Light> targetLights = new List<Light>(); // Cho phép gán nhiều đèn
[SerializeField] private bool isOn = true;
[Header("Emission Settings (Optional)")] [SerializeField]
private MeshRenderer lampRenderer;
[SerializeField] private int materialIndex = 0;
[SerializeField] private string emissionColorProperty = "_EmissionColor";
private Material lampMaterial;
private Color originalEmissionColor;
private void Start()
{
if (targetLight != null)
targetLight.enabled = isOn;
// Khởi tạo Material (tạo bản thực thi riêng để không lỗi Shader)
if (lampRenderer != null && materialIndex < lampRenderer.materials.Length)
{
lampMaterial = lampRenderer.materials[materialIndex];
if (lampMaterial.HasProperty(emissionColorProperty))
{
originalEmissionColor = lampMaterial.GetColor(emissionColorProperty);
}
}
UpdateLightState();
}
protected override void PerformInteraction(PlayerStateMachine player)
{
isOn = !isOn;
if (targetLight != null)
targetLight.enabled = isOn;
Debug.Log($"[Lamp] Toggled {(isOn ? "ON" : "OFF")}");
UpdateLightState();
// Log cực mạnh để bạn kiểm tra Console
Debug.LogWarning($"<color=yellow>[Lamp]</color> Đèn đã chuyển sang: {(isOn ? "BẬT" : "TẮT")}");
}
private void UpdateLightState()
{
// Bật/Tắt tất cả các đèn trong danh sách
foreach (var light in targetLights)
{
if (light != null) light.enabled = isOn;
}
// Bật/Tắt hiệu ứng phát sáng của vật liệu
if (lampMaterial != null)
{
if (isOn)
{
lampMaterial.SetColor(emissionColorProperty, originalEmissionColor);
lampMaterial.EnableKeyword("_EMISSION");
}
else
{
// Tắt hẳn màu phát sáng
lampMaterial.SetColor(emissionColorProperty, Color.black);
lampMaterial.DisableKeyword("_EMISSION");
}
}
}
}
}
}