OnParticleCollision();
emission -> Burst -> time : 0, count : 대충 300
예를들어 삭제 등등.. -> Stop Action 설정.
예를들어 폭발 파티클을 만들고 프리팹으로 생성했다.
플레이어와 적 기체의 폭발 효과를 조금 다르게 하고싶다면, 폭발 프리팹에 Prefab Variant를 만들 수 있다.
프로젝트 창에서 프리팹 우클릭 -> create -> scene -> prefab variant
base프리팹에 score 라는 스크립트를 생성해 컴포넌트로 추가하고, 해당 오브젝트를 파괴 했을 때 얻는 포인트값을 직렬화된 필드로 지정한다고 하자.
이 프리팹을 기반으로 생성된 프리팹은 각각 다른 획득 포인트를 쉽게 지정해줄 수 있다.
즉 프리팹을 생성했을 때 훨씬 효율적으로 관리할 수 있다. -> 캡슐화의 장점 & 재사용성과 확장성 UP
생성한 클래스의 메서드를 다른 클래스에서 참조하려면,
참조하려는 메서드를 public으로 정의,
Scoreboard scoreboard;
private void Start()
{
scoreboard = FindFirstObjectByType<Scoreboard>();
}
...
scoreboard.IncreaseScore(scoreValue); // 참조하려는 메서드
...
이렇게 해주면 됨. FindFirstObjectByType 이건 해당하는 첫 타입을 참조한다는 것이다.
첫 타임라인을 만들고, 다음 웨이브가 등장하는 타임라인을 새로 만들고 싶을 수도 있다.
마스터 타임라인을 만든 것처럼, 새로운 타임라인을 만들어주고, 마스터 타임라인에 Control track을 추가해준뒤 생성한 타임라인을 해당 필드에 넣어주면 된다.
간단. 마스터 타임라인 필드에 드래그앤 드롭만 해주면 됨.
TMP UI생성후 보이스라인 추가할때와 마찬가지로 추가하면 된다.
그룹화 해서 관리하면 훨씬 편하다.
예를들어 8개의 음성 대사가 있다고 하면, TMP로 자막을 만들어 관리할 수 있다. 스크립트로 관리하면 편하다.
TMP를 넘겨줄 스크립트를 작성.
//DialogueLines.cs
using UnityEngine;
using TMPro;
public class DialogueLines : MonoBehaviour
{
[SerializeField] TMP_Text dialoguText;
[SerializeField] string[] timelineTextLines;
int currentLine = 0;
public void NextDialogueLine()
{
currentLine++;
dialoguText.text = timelineTextLines[currentLine];
}
}
필요한 자막을 timelineTextLines 라는 배열로 생성해준다.

TMP를 하나 생성해 위치를 조절하고 마스터 타임라인에 추가.
초기 내용은 상관이 없고, 음성 대사만큼 추가하고, 타이밍도 맞춰준다.

핀 버튼을 눌러 마커 창을 띄운다.
다음 자막이 나와야 할 타이밍에 우클릭, Add signal Emitter.
누르면 생성할 위치를 지정하라는데, 타임라인 관리하는 폴더에 생성하면 될듯.
인스펙터를 보면, 시그널 emitter, 시그널 receiver가 있는데, emitter에 방금 생성한 오브젝트, receiver에 생성한 스크립트를 지정해준다.
receiver 오른쪽 드롭박스를 보면 스크립트에서 생성한 DialogueLines() 메서드가 있는데, 선택 해준다.
이제, 자막 갱신이 필요한 곳에 마커를 복붙하면 된다.
동작 과정을 정리해보자면, 해당 시점에서 emitter가 리시버를 호출, 호출을 받은 리시버가 지시받은 스크립트(메서드 혹은 작업)을 수행한다.
다른방법은 없을까?
있다.

플러스버튼 - 시그널 트래커

스크립트가 부착된 오브젝트 넣고, 똑같이 해주면 됨.
인스펙터에서 add reaction, 이후 같은 과정 수행.

이런식으로 다이얼로그 사이에 넣기만 하면 된다.