본문 바로가기

Unity/Unity2D_TopDown

Unity2D_TopDown - 대화애니메이션

1. 대화창 속 대화 text가 한글자식 차례대로 나오는 애니메이션 코드로 구현하기

 

 -TalkEffect 스크립트를 생성후 계층구조 UI안의 Text 오브젝트에 드래그앤 드랍

 - TalkEffect 스크립트 작성

*애니메이션 효과를 코드로 나타내기 위해서는 아래와 같이 데이터 셋팅, EffectStrat(), Effecting(), EffectEnd() 처럼

 세가지 동작함수로 나누어 구현한다

 

*msgData[presentMsgIndex] --> msgData는 string이다 만약 "ABC" 라면 msgData[0]은 "A"가 된다

  즉 string자료형을 하나의 배열이라고 보고 string의 원소를 char자료형으로 보도록 C#언어가 구현되어 있다

 - GameManigerScript에서 실행코드 작성

 - TalkEnd 커서이미지도 대화이펙트로써 활성화 비활성화를 구현

  (public GameObject에 TalkEnd오브젝트 드래그 앤 드랍)

 

 

2. 글자가 한글자씩 생성될때 마다 sound 추가

(1) - Text오브젝트에 AudioSound 속성 추가 

    - Play On Awake를 체크해제 해주고

    - 사운드클립에 사운드를 드래그앤 드랍

(2) - Text 스크립트 작성

    -  공백과 .에서는 소리가 안나도록 작성

 

 

3. 대화 스킵 구현

(1) - isAnim라는 플래그를 bool값으로 생성 (대화이펙트진행중인지 아닌지를 나타내는 값)

(2) - 대화이펙트가 시작되면 isAnim를 true로 하고 

(3) - 대화이펙트가 끝나면 isAnim를 false로 한다

(4) - 만약 대화이펙트가 true인 상태에서 스페이스바를 누르면 GameManigerScript의 Talk()함수가 실행되면서

 대화이펙트 즉 talkEffect.isAnim가 true 이기때문에 setMsgData함수가 실행되면서 return으로 인해

해당함수 아래코드들이 실행되지 않아 대화 내용이 바뀌지 않고 그대로 Talk함수가 종료됨