user d8cdf1a4d2 ADD: 의상 기반 변신 연출 + Piloto Studio VFX 에셋
- AvatarOutfitController: 의상 변경 시 NiloToon renderCharacter 토글 + VFX/SFX/컬러 플래시 연출
- TransformEffectPreset ScriptableObject 로 프리셋 공유
- 아바타별 isTransforming 플래그로 동시 변신 지원
- 의상 리스트 순서 변경 (▲▼) 기능
- Piloto Studio 파티클 번들 추가

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 02:21:30 +09:00

99 lines
2.6 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace PilotoStudio
{
public class ParticleShowcase : MonoBehaviour
{
[SerializeField]
private List<GameObject> particles = new List<GameObject>();
[SerializeField]
private int currentlyActive = 0;
[SerializeField]
private Text displayName;
private void Start()
{
foreach (Transform t in this.transform)
{
particles.Add(t.gameObject);
}
PostUpdateLogic();
particles[currentlyActive].SetActive(true);
}
void PostUpdateLogic()
{
if (displayName != null)
displayName.text = particles[currentlyActive].name;
if (particles[currentlyActive].TryGetComponent<ParticleHandler>(out ParticleHandler handler))
{
handler.Cast();
}
}
public void ActivateNext()
{
if (currentlyActive + 1 >= particles.Count)
{
particles[currentlyActive].SetActive(false);
currentlyActive = 0;
particles[currentlyActive].SetActive(true);
}
else
{
particles[currentlyActive].SetActive(false);
currentlyActive++;
particles[currentlyActive].SetActive(true);
}
PostUpdateLogic();
}
public void ActivatePrevious()
{
if (currentlyActive - 1 < 0)
{
particles[currentlyActive].SetActive(false);
currentlyActive = (particles.Count - 1);
particles[currentlyActive].SetActive(true);
}
else
{
particles[currentlyActive].SetActive(false);
currentlyActive--;
particles[currentlyActive].SetActive(true);
}
PostUpdateLogic();
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Q))
{
ActivatePrevious();
}
if (Input.GetKeyDown(KeyCode.W))
{
ActivateNext();
}
if (Input.GetKeyDown(KeyCode.Space))
{
if (particles[currentlyActive].TryGetComponent<ParticleSystem>(out ParticleSystem ps))
{
ps.Play();
}
PostUpdateLogic() ;
}
}
}
}