Unity_3D Survival Game Development_6

이승용·2021년 4월 5일
0
  • 이번 포스트에서는 NPC와의 퀘스트 이벤트 구현을 대비한 NPC 대화 시스템 구현을 테스트한 내용을 위주로 한다.
  1. Asset Store에서 기본 3D 캐릭터 무료 Asset을 다운 받은 뒤 import한다.

  2. TextArea

    • TextArea를 통해 텍스트 및 대화창 이미지를 인스펙터를 통해 삽입할 수 있다.
public class Dialogue
{
    [TextArea] // 인스펙터를 통해 문장 수정 및 등록
    public string dialogue;
    public Sprite cg;
}
  1. 대화 알고리즘 구현
public class Test : MonoBehaviour
{

    [SerializeField] private SpriteRenderer sprite_StandingCG; // 인물사진
    [SerializeField] private SpriteRenderer sprite_DialogueBox; // 대화창
    [SerializeField] private Text txt_Dialogue; // 대화내용

    private bool isDialogue = false; 

    private int count = 0;

    // 대사의 길이는 지정된 것이 아니므로 배열로 선언
    [SerializeField] private Dialogue[] dialogue;

   
    public void ShowDialogue()
    {
        Onoff(true);
        count = 0;
        NextDialogue();
    } // 인물사진, 대화창, 대화내용 보여주는 함수

    // 시작 눌렀을 때 인물사진, 대화창, 대화내용 띄우는 함수
    private void Onoff(bool _flag)
    {
        sprite_DialogueBox.gameObject.SetActive(_flag);
        sprite_StandingCG.gameObject.SetActive(_flag);
        txt_Dialogue.gameObject.SetActive(_flag);
        isDialogue = _flag;

    }
    // 다음 대화화면 이동 함수
    private void NextDialogue()
    {
        txt_Dialogue.text = dialogue[count].dialogue;
        sprite_StandingCG.sprite = dialogue[count].cg;
        count ++;
    }


    // 마우스 왼쪽 클릭할때마다 다음 화면으로 넘어가기
    void Update()
    {
        
        if(isDialogue)
        {
            if(Input.GetMouseButtonDown(0))
            {
                if(count < dialogue.Length)
                    NextDialogue();
                else
                    Onoff(false);
            }
        }

    }
}

-> [1. 대화 시작 버튼]

-> [2. NPC와 대화 진행]

  • 수정 및 보완 필요 부분 : 대화 도중 시작 버튼 삭제 필요, NPC 대사별 표정 변화 필요, 대화 시스템을 통한 퀘스트 진행 구현 필요
profile
A little strange but passionate, sincere hard worker.

0개의 댓글