오늘 학습 키워드

유니티 심화 팀 프로젝트, 데이터 특강 (Excel to Json)

오늘 학습 한 내용을 나만의 언어로 정리하기

유니티 심화 팀 프로젝트

또 바뀐 BT

  • 데미지 받는건 실시간 처리하고, 패링으로 인한 스턴을 처리해야함

스턴 만들기

// CheckStunNode.cs
public class CheckStunNode : Node  
{  
    private MonsterAI monsterAI;  
  
    public CheckStunNode(MonsterAI monsterAI)  
    {  
        this.monsterAI = monsterAI;  
    }  
  
    public override NodeState Evaluate()  
    {  
        if (monsterAI.Monster.IsStunned)  
        {  
            state = NodeState.Success;  
        }  
        else  
        {  
            state = NodeState.Failure;  
        }  
  
        return state;  
    }  
}
 
// StunWaitNode.cs
public class StunWaitNode : Node  
{  
    private MonsterAI monsterAI;  
    private float waitTime;  
    private float startTime;  
    private bool isStarted = false;  
  
    public StunWaitNode(MonsterAI monsterAI, float waitTime)  
    {  
        this.waitTime = waitTime;  
        this.monsterAI = monsterAI;  
        startTime = 0;  
    }  
  
    public override NodeState Evaluate()  
    {  
        if (!isStarted)  
        {  
            startTime = Time.time;  
            monsterAI.Damaged();  
            monsterAI.Monster.Animator.animator.speed = 0f;  
            isStarted = true;  
        }  
  
        if (Time.time - startTime >= waitTime)  
        {  
            isStarted = false;  
            startTime = 0;  
            state = NodeState.Success;  
            monsterAI.Monster.Animator.animator.speed = 1f;  
            monsterAI.Monster.IsStunned = false;  
            monsterAI.Monster.Animator.StopAnimation(monsterAI.Monster.Animator.data.StunnedHash);  
            return state;  
        }  
          
        state = NodeState.Running;  
        return state;  
    }  
}

보스 몬스터?

  • 근거리 몬스터랑 원거리 몬스터 합쳐서 만듬

데이터 특강 (Excel to Json)

  • 게임 데이터 : 각 아이템이 어떤 아이콘을 가지고 있는지, 가격은 얼미인지 등 개발자가 준비해 두는 고정된 데이터

  • 유저 데이터 : 유저의 행동에 따라 변하는 데이터

  • 오늘 할 일 : 컴퓨터에 있는 파일을 유니티에서 활용가능한 데이터로 가공하는 것

    • SO : 빠름. 타입 체크에 강함.
    • JSON : 서버랑 통신하기에도 좋음, 근데 연산 비용 듬
  1. 엑셀 파일을 만든다.
  2. 엑셀 파일에 맞게 Serializable한 클래스를 만들어준다.
  3. 엑셀 파일 우클릭 후 Create> ExcelAssetScript 하면 알아서 스크립트 생성됨.
  4. 엑셀 파일 우클릭 후 Reimport 하면 SO 자동 생성됨

학습하며 겪었던 문제점 & 에러

문제 1

  • 문제&에러에 대한 정의

몬스터 공격 구현을 하려는데 콜라이더가 달린 오브젝트를 껐다 켰다 했는데, 플레이어가 움직이지 않으면 플레이어의 콜라이더를 검출하지 못하는 현상이 있었음

  • 해결 방법

콜라이더가 달린 오브젝트를 껐다 키지 말고, 콜라이더 컴포넌트만 껐다 키기

  • 이 문제&에러를 다시 만나게 되었다면?

컴포넌트만 껐다 킬 수 있다는걸 잊지 말기

문제 2

  • 문제&에러에 대한 정의

스프라이트 렌더러의 색상을 바꿔도 자꾸 자동으로 기본 색상 (흰색)으로 돌아감

  • 해결 방법
public void SetColor(Color color)
{
    var block = new MaterialPropertyBlock();
    spriteRenderer.GetPropertyBlock(block);
    block.SetColor("_Color", color);
    spriteRenderer.SetPropertyBlock(block);
}
 

MaterialPropertyBlock 을 사용해서 바꿈

  • 새롭게 알게 된 점

MaterialPropertyBlock = 마테리얼 속성 컨테이너

  • 이 문제&에러를 다시 만나게 되었다면?

상황에 따라 MaterialPropertyBlock을 사용해야겠다.