
오늘 학습 키워드
최종 팀 프로젝트
오늘 학습 한 내용을 나만의 언어로 정리하기
이펙트 매니저 수정
- 원래 이펙트 매니저를 통해서 새로운 이펙트를 발생시키면 나머지 이펙트가 자동으로 다 삭제됐음.
- 근데 그러다보니까 버프기처럼 오래 남아있어야하는 이펙트가 다른 이펙트 실행으로 인해 사라지는 상황 발생
- 그래서 자동으로 삭제되는 부분을 지우고 다른 방법으로 관리할 예정
플레이어가 맞을 때 눈에 띄게 하기
// PlayerCondition.cs
public void TakeDamage(int damage)
{
...
controller.Animator.DamagedFeedback(flashTime, flashSpeed);
...
}
// PlayerAnimator.cs
public void DamagedFeedback(float flashTime, float flashSpeed)
{
if (damagedFlashCoroutine != null)
{
StopCoroutine(damagedFlashCoroutine);
ApplyColor(originalColor);
}
damagedFlashCoroutine = StartCoroutine(FlashRoutine(flashTime, flashSpeed));
}
private IEnumerator FlashRoutine(float flashTime, float flashSpeed)
{
float elapsed = 0f;
while (elapsed < flashTime)
{
elapsed += Time.deltaTime;
float t = Mathf.PingPong(elapsed * flashSpeed, 1f);
Color lerped = Color.Lerp(originalColor, Color.red, t);
ApplyColor(lerped);
yield return null;
}
ApplyColor(originalColor);
}
private void ApplyColor(Color color)
{
spriteRenderer.GetPropertyBlock(mpb);
mpb.SetColor(mpbColorKey, color);
spriteRenderer.SetPropertyBlock(mpb);
}
- Mathf.PingPong 사용해서 빨간색으로 갔다가 원래 색으로 돌아오도록 설정
- 플레이어가 무적상태가 아니고 맞았을 때만 반짝이게 할 예정
State Length를 애니메이션에 맞추기
- 가끔 애니메이션이 분할되어 있는 경우가 있음.
- Ex) SuperCrash, WhileSuperCrash, EndSuperCrash
- 그러면 분할되어 있는 모든 애니메이션의 길이를 합해서 StateLength를 정해야 함
- 지금의 코드는 일치하는 하나만 찾게 되어있음.
- 그걸 이제 GetType().Name이 포함된 애니메이션들을 합쳐서
학습하며 겪었던 문제점 & 에러
문제 1
- 문제&에러에 대한 정의
중단점에 조건을 걸었는데 안됐음
- 해결 방법 “== 을 안해서 그런거였음
문제 2
- 문제&에러에 대한 정의
오브젝트 풀에서 계속 키가 없다는 에러를 냈음
- 내가 한 시도
중단점을 열심히 찍어봄
- 해결 방법
오브젝트를 풀에 등록하기 전에 한 번 더 호출되어서 그런거였음
- 새롭게 알게 된 점
비동기 순서 조심하자
문제 3
- 문제&에러에 대한 정의
맞았을 때 플레이어 색깔 바꾸려고 MaterialPropertyBlock 받으려고 하는데 자꾸 이상한 오류가 떴음
ArgumentNullException: Value cannot be null.
Parameter name: dest
-
해결 방법 Material Property Block을 new 로 초기화해주지 않아서 그럼. 초기화 해주고 하니까 괜찮아짐
-
새롭게 알게 된 점 ref로 받아오려고 해도 비어있으면 안되는 경우가 있는듯.
문제 4
- 문제&에러에 대한 정의
애니메이터 키려고 하면 자꾸 오류뜸
NullReferenceException: Object reference not set to an instance of an object UnityEditor.Graphs.AnimationStateMachine.Graph.GenerateConnectionKey
- 해결 방법 애니메이터 창 한 번 완전히 끄고 다시 키니까 괜찮아짐.
문제 5
-
문제&에러에 대한 정의 Target Platform을 WebGL로 바꾸니까 갑자기 타이틀 씬에서 다음으로 안넘어감. 그리고 에디터에서 봤을 때 전부 핑크색으로 보임.
-
해결 방법 일단은.. 쉐이더가 어드레서블에 포함되지 않은게 문제로 보임. 내일 쉐이더 프리로드해볼 예정.