728x90
[Unity] 대화창을 만들어 object의 이름을 출력해보자에서 설명했던 대화창 출력 방법에서 변화된것이 많아서 GameManager 스크립트의 코드를 전부 가져왔습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GameManager : MonoBehaviour
{
public Text talkText;
public TalkManager talkManager;
public GameObject TalkImage;
public GameObject scanObject;
public Image portraitImage;
public bool isMove;
public int talkIndex;
|
- talkText - 대화창에 텍스트를 띄어줄 변수이다.
- talkManager - TalkManager 스크립트를 저장한 변수이다.
- TalkImage - 대화창 배경이 될 변수이다.
- scanObject - rayCast로 확인한 오브젝트를 저장할 변수이다.
- portraitImage - 오브젝트의 이미지를 저장할 변수이다.
- isMove - 플레이어가 움직일 수 있는지 없는지에 대한 정보를 저장할 변수이다.
- talkIndex - 몇번째 대화가 이어지는지 저장할 변수이다.
1
2
3
4
5
6
7
8
|
public void ShowText(GameObject scanObj)
{
scanObject = scanObj;
ObjectData objectData = scanObject.GetComponent<ObjectData>();
OnTalk(objectData.id, objectData.isNpc);
TalkImage.SetActive(isMove);
}
|
scanObject에 인자로 받은 scanObj를 저장해주고 확인한 오브젝트의 ObjectData를 가져온다. 그리고 OnTalk에 확인한 오브젝트의 값을 인자로 전달해준다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
void OnTalk(int id, bool isNpc)
{
string talkData = talkManager.GetTalk(id, talkIndex);
if(talkData == null)
{
isMove = false;
talkIndex = 0;
return;
}
if (isNpc)
{
talkText.text = talkData;
portraitImage.sprite = talkManager.GetSprite(id);
portraitImage.color = new Color(1, 1, 1, 1);
}
else
{
talkText.text = talkData;
portraitImage.color = new Color(1, 1, 1, 0);
}
isMove = true;
talkIndex++;
}
}
|
전달받은 인수를 사용하여 talkManager의 GetTalk 함수를 사용하여 talkData에 저장해준다. 그리고 저장된 talkData를 talkText의 text값으로 넘겨주어서 npc와 대화할 수 있게 해준다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public GameManager manager;
void Update()
{
if (Input.GetButtonDown("Jump") && scanObj != null)
{
manager.ShowText(scanObj);
}
}
}
|
마지막으로 플레이어가 스페이스바를 누르면 대화가 실행될 수 있게 Player 스크립트에 위의 내용을 추가해준다.
728x90
'Unity' 카테고리의 다른 글
[Unity] 퀘스트를 만들어보자(2) (0) | 2020.05.16 |
---|---|
[Unity] 퀘스트를 만들어보자(1) (0) | 2020.05.15 |
[Unity] npc와 대화를 해보자(1) (0) | 2020.05.13 |
[Unity] 대화창을 만들어 object의 이름을 출력해보자 (0) | 2020.05.12 |
[Unity] 플레이어를 이용한 선택적 무한 배경(2) (0) | 2020.05.11 |