tào lao bí đao
This commit is contained in:
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user