添加场景、对应场景代码
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace GameFramework
|
||||
{
|
||||
/// <summary>
|
||||
/// 得分拾取物。
|
||||
/// 玩家碰到(OnTriggerEnter + tag="Player")后加分、播音效、隐藏自身。
|
||||
/// 可自动复位(可选),用于不吃豆就复活的场景。
|
||||
/// </summary>
|
||||
public class ScorePickup : MonoBehaviour
|
||||
{
|
||||
[SerializeField] int scoreValue = 10;
|
||||
[SerializeField] AudioData pickUpSFX;
|
||||
[SerializeField] float respawnTime = 0f; // 0=不复活(永久消失)
|
||||
|
||||
[Header("Auto Assign")]
|
||||
[SerializeField] bool findScoreManagerAutomatically = true;
|
||||
|
||||
Collider pickupCollider;
|
||||
MeshRenderer meshRenderer;
|
||||
|
||||
void Awake()
|
||||
{
|
||||
pickupCollider = GetComponent<Collider>();
|
||||
meshRenderer = GetComponentInChildren<MeshRenderer>();
|
||||
// 确保有触发器
|
||||
if (pickupCollider != null)
|
||||
pickupCollider.isTrigger = true;
|
||||
}
|
||||
|
||||
void OnTriggerEnter(Collider other)
|
||||
{
|
||||
if (!other.CompareTag("Player")) return;
|
||||
|
||||
// 加分
|
||||
if (ScoreManager.Instance != null)
|
||||
ScoreManager.Instance.AddScore(scoreValue);
|
||||
|
||||
// 音效
|
||||
if (AudioManager.Instance != null && pickUpSFX != null)
|
||||
AudioManager.Instance.PlaySFX(pickUpSFX);
|
||||
|
||||
// 隐藏/复活
|
||||
if (respawnTime > 0f)
|
||||
{
|
||||
SetVisible(false);
|
||||
Invoke(nameof(Respawn), respawnTime);
|
||||
}
|
||||
else
|
||||
{
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
void SetVisible(bool visible)
|
||||
{
|
||||
if (pickupCollider != null)
|
||||
pickupCollider.enabled = visible;
|
||||
if (meshRenderer != null)
|
||||
meshRenderer.enabled = visible;
|
||||
}
|
||||
|
||||
void Respawn()
|
||||
{
|
||||
SetVisible(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user