728x90
inventory.cs
아이템을 먹었을 때 실행되는 AddInventory(GameOjbect itemObj) <- 매개변수가 먹은 아이템(프리팹)
아이템이 퀘스트용이고 열쇠이면, GameManager.
if(itemData.items[iteminfo.itemId].itemType == ItemType.Quest) //아이템이 퀘스트용이면
{
if (itemObj.gameObject.GetComponent<ObjData>().id == 200)
{//열쇠
PlayerMove.instance.scanObject = itemObj;
Debug.Log(PlayerMove.instance.scanObject.name);
GameManager.instance.Action(PlayerMove.instance.scanObject);
}
}
inventory.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Inventory : MonoBehaviour
{
public bool isOpenInventory;
public GameObject bag;
//Script
public ItemData itemData;
public BagScript bagScript;
public static Inventory instance;
bool isSlotEmpty;
// Start is called before the first frame update
void Start()
{
instance = this;
isOpenInventory = false;
//AddSlots(slotCount);
bag.SetActive(true);
//bag.SetActive(false);
}
// Update is called once per frame
public void Update()
{
if (!isOpenInventory)
{
bag.SetActive(false);
}
if (Input.GetButtonDown("Inventory")) //i 버튼을 누르면 인벤토리 창이 뜸
{
openInventory();
}
}
public void openInventory()
{
isOpenInventory = !isOpenInventory;
bag.SetActive(isOpenInventory);
}
public void AddInventory(GameObject itemObj) //인벤토리에 아이템 추가
{
int itemNum=0;
// Debug.Log("AddInventory 함수 실행"); ->실행됨
Sprite itemImage;
ItemInfo iteminfo = itemObj.GetComponent<ItemInfo>();
SlotScript slotScript;
slotScript = bagScript.slotList[0].gameObject.GetComponent<SlotScript>();
if (itemObj.GetComponent<ItemInfo>().itemId != 1)
{
isSlotEmpty = true;
for (int i = 0; i < bagScript.slotCount; i++) //인벤토리 안에 같은 id 가진 아이템이 있을 때 먼저, 없을때 나중에
{
Debug.Log("인벤토리 for문 안으로 들어옴");
slotScript = bagScript.slotList[i].gameObject.GetComponent<SlotScript>();
if (slotScript.SlotItemId == iteminfo.itemId)
{ //같은 id 가진 아이템 있을 때는 수량 추가
isSlotEmpty = false;
Debug.Log("같은 id 가진 아이템 있을 때");
slotScript.SlotItemCount++;
itemNum = slotScript.SlotItemCount;
break;
}
else if (slotScript.isSlotEmpty) //비었을 때 아이템 이미지 넣기
{
/*
Debug.Log("인벤토리 비어있음!");
isSlotEmpty = true;
itemImage = itemData.items[iteminfo.itemId].itemImage;
bagScript.slotList[i].gameObject.GetComponent<Image>().sprite = itemImage;
bagScript.slotList[i].gameObject.GetComponent<Image>().color = new Color(1, 1, 1, 1);
slotScript.isSlotEmpty = false;
slotScript.SlotItemId = iteminfo.itemId;
slotScript.SlotItemCount++;
itemNum = slotScript.SlotItemCount;
*/
//break;
}
}
if (isSlotEmpty) //정말로 인벤토리에 같은 아이템이 들어있지 않을 때
{
slotScript = bagScript.slotList[0].gameObject.GetComponent<SlotScript>();
for (int i = 0; i < bagScript.slotCount; i++)
{
slotScript = bagScript.slotList[i].gameObject.GetComponent<SlotScript>();
if (slotScript.isSlotEmpty)
{
itemImage = itemData.items[iteminfo.itemId].itemImage;
bagScript.slotList[i].gameObject.GetComponent<Image>().sprite = itemImage;
bagScript.slotList[i].gameObject.GetComponent<Image>().color = new Color(1, 1, 1, 1);
slotScript.isSlotEmpty = false;
slotScript.SlotItemId = iteminfo.itemId;
slotScript.SlotItemCount++;
itemNum = slotScript.SlotItemCount;
if (itemData.items[iteminfo.itemId].itemSlot <= slotScript.SlotItemCount)
//퀘스트용 아이템일 경우에 하나만 얻으면 그 다음부터는 못 얻도록
itemData.items[iteminfo.itemId].isSatisfyQuest = true;
if(itemData.items[iteminfo.itemId].itemType == ItemType.Quest) //아이템이 퀘스트용이면
{
if (itemObj.gameObject.GetComponent<ObjData>().id == 200)
{//열쇠
PlayerMove.instance.scanObject = itemObj;
Debug.Log(PlayerMove.instance.scanObject.name);
GameManager.instance.Action(PlayerMove.instance.scanObject);
}
}
break;
}
}
}
slotScript.ItemTextUpdate(itemNum);
Debug.Log("아이템 개수 업데이트");
}
}
}
PlayerMove.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class PlayerMove : MonoBehaviour
{
//스크립트
public MonsterMove monster;
public Hurdle thorn;
public QuestManager questManager;
public ItemInfo itemInfo;
//public GameManager gameManager;
public static PlayerMove instance;
public GameObject scanObject; //스캔한 오브젝트 저장
public int maxHP;
public int hp;
public int Attack_Range;//다음 행동지표를 결정할 변수
public int op;
GameObject NPC;
bool isDie = false;
public float maxSpeed;
public float jumpPower;
public int direction;
float detect_range = 6.5f;
//public Hurdle thorn;
Rigidbody2D rigid;
SpriteRenderer spriteRenderer;
Animator anim;
CapsuleCollider2D capcollider;
[SerializeField] private Transform returnZone;
// Start is called before the first frame update
void Start()
{
instance = this;
maxHP = 100 + GameManager.instance.Level * 25;
hp = maxHP;
Attack_Range = 5;
direction = 1;
op = 10 + GameManager.instance.Level * 2;
}
void Awake()
{
capcollider = GetComponent<CapsuleCollider2D>();
rigid = GetComponent<Rigidbody2D>();
spriteRenderer = GetComponent<SpriteRenderer>();
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
//점프
if (Input.GetButtonDown("Jump") && !anim.GetBool("isJump"))
{
if(GameManager.instance.isAction){ //대화창이 켜져있을 떄는 무조건 action을 실행(다음 대사로 넘어가도록 )
GameManager.instance.Action(GameManager.instance.scanObject);
}
else{ // 대화창이 닫혀있을 떄는
if (scanObject != null) //조사액션이 수행되면(앞에 뭐가 있으면)
{
GameManager.instance.Action(scanObject); //조사액션으로 액션수행
//questManager.CheckQuestId(scanObject);
//Debug.Log(scanObject.name);
}
else//뭐없으면 점프
{
rigid.AddForce(Vector2.up * jumpPower, ForceMode2D.Impulse);
anim.SetBool("isJump", true);
}
}
/*
//if(GameManager.instance.scanObject != null)
//{
// GameManager.instance.Action(scanObject);
//}
if (scanObject != null)
{
GameManager.instance.Action(scanObject);
//questManager.CheckQuestId(scanObject);
//Debug.Log(scanObject.name);
}
else if(GameManager.instance.scanObject !=null && GameManager.instance.scanObject.name == "Item_Key(Clone)")
{
Debug.Log("스캔은널 게임은 널아님");
GameManager.instance.Action(GameManager.instance.scanObject);
}
else
{
rigid.AddForce(Vector2.up * jumpPower, ForceMode2D.Impulse);
anim.SetBool("isJump", true);
}
*/
}
//멈추기 -> 미끄럼방지?
if (Input.GetButtonUp("Horizontal"))
{
rigid.velocity = new Vector2(rigid.velocity.normalized.x * 0.5f, rigid.velocity.y);
}
//방향 전환
if (GameManager.instance.isAction == false && Input.GetButton("Horizontal"))
{
if (Input.GetAxisRaw("Horizontal") == -1)
{
direction = -1;
spriteRenderer.flipX = true;
}
else
{
spriteRenderer.flipX = false;
direction = 1;
}
}
//공격
if (Input.GetButtonDown("Attack"))
{
//애니메이션 실행
anim.SetTrigger("isAttack");
//몬스터를 감지하는 레이를 발사
Vector2 detect_mon = new Vector2(rigid.position.x, rigid.position.y - 2.5f);
Debug.DrawRay(detect_mon, new Vector3(direction * Attack_Range, 0, 0), Color.blue); //빔을 쏨
//감지되는 몬스터 레이어를 저장
RaycastHit2D raycast_monster = Physics2D.Raycast(detect_mon, new Vector3(direction, 0, 0), Attack_Range, LayerMask.GetMask("Monster"));
//null이 아닐경우 : 무언가 공격에 닿음
if (raycast_monster.collider != null)
{
Debug.Log(raycast_monster.collider.name);
//애니메이션이 실행되는 동안
if (anim.GetCurrentAnimatorStateInfo(0).IsName("Player_Attack"))
{
//레이에 닿은 몬스터를 공격
OnAttack(raycast_monster.transform);
}
}
}
//애니메이션
if (Mathf.Abs(rigid.velocity.x) < 0.3)
anim.SetBool("isRun", false);
else
anim.SetBool("isRun", true);
//생명
if (hp <= 0)
{
if (!isDie)
Die();
return;
}
//NPC
//if (Input.GetButtonDown("Jump") && NPC != null)
//{
// Debug.Log("This is : " + NPC.name);
//}
}
void FixedUpdate()
{
//조사액션
//Ray
//if (scanObject == null)
//{
Debug.DrawRay(transform.position, new Vector3(direction * detect_range, 0, 0), new Color(0, 0, 1));
//Layer가 Object인 물체만 rayHit_detect에 감지
RaycastHit2D rayHit_detect = Physics2D.Raycast(transform.position, new Vector3(direction, 0, 0), detect_range, LayerMask.GetMask("Object"));
//감지되면 scanObject에 오브젝트 저장
if (rayHit_detect.collider != null)
{
scanObject = rayHit_detect.collider.gameObject;
//Debug.Log(scanObject.name);
}
else
{
scanObject = null;
//Debug.Log("null");
}
//}
//점프
//if (Input.GetButtonDown("Jump") && !anim.GetBool("isJump"))
//{
// rigid.AddForce(Vector2.up * jumpPower, ForceMode2D.Impulse);
// anim.SetBool("isJump", true);
//}
float h = GameManager.instance.isAction ? 0 : Input.GetAxisRaw("Horizontal");
Move();
Jump(); //점프 빔쏘기
//덩쿨 올라가기
Vector2 frontVec = new Vector2(rigid.position.x, rigid.position.y);
Debug.DrawRay(frontVec, Vector3.right * 1, new Color(0, 1, 0));
RaycastHit2D raycast = Physics2D.Raycast(frontVec, Vector3.right, 0.1f, LayerMask.GetMask("Structure"));
if (raycast.collider != null)
{
anim.SetBool("isHanging", true);
if (Input.GetButtonDown("Jump"))
{
//덩쿨에서 점프하면 빠져나오는 부분
rigid.constraints = RigidbodyConstraints2D.None | RigidbodyConstraints2D.FreezeRotation;
transform.position = new Vector2(transform.position.x + h * 2, transform.position.y);
rigid.AddForce(Vector2.up * jumpPower, ForceMode2D.Impulse);
anim.SetBool("isHanging", false);
anim.SetBool("isJump", true);
Jump();
}
else
{
//덩쿨 올라가는 부분
rigid.constraints = RigidbodyConstraints2D.FreezePositionX | RigidbodyConstraints2D.FreezePositionY;
if (Input.GetButton("Vertical"))
{
rigid.constraints = RigidbodyConstraints2D.None | RigidbodyConstraints2D.FreezeRotation | RigidbodyConstraints2D.FreezePositionX;
float updown = Input.GetAxisRaw("Vertical");
rigid.AddForce(Vector2.up * updown * 10, ForceMode2D.Impulse);
}
}
}
else
{
anim.SetBool("isHanging", false);
}
/*
Vector2 detect_object = new Vector2(rigid.position.x, rigid.position.y - 3f);
Debug.DrawRay(detect_object, new Vector3(direction * 5, 0, 0), Color.red); //빔을 쏨
RaycastHit2D raycast_object = Physics2D.Raycast(detect_object, new Vector3(direction, 0, 0), 5, LayerMask.GetMask("NPC"));
if (raycast_object.collider != null)
{
NPC = raycast_object.collider.gameObject;
}
else
{
NPC = null;
}
*/
}
private void OnTriggerEnter2D(Collider2D other)
{
//구덩이에 빠지면 saveJone에서 다시 떨어지게 하기
if (hp > 0)
{
if (other.CompareTag("Return"))
{
GameManager.instance.isEnterSaveJone = true;
}
}
if (other.CompareTag("deadline"))
{
if (hp > 0)
{
hp = hp - 20;
if (GameManager.instance.isEnterSaveJone)
{
transform.position = returnZone.position;
StartCoroutine("Blinking");
gameObject.layer = 12;
Invoke("OffDamaged", 2);
}
else
transform.position = new Vector2(100f, 20f);
//NPC = null;
}
else
{
Die();
}
}
//아이템 먹기
if (other.CompareTag("Item"))
{
if (other.gameObject.name.Contains("Coin"))
{
Debug.Log("먹은 코인: " + other.gameObject.GetComponent<ItemInfo>().money);
GameManager.instance.money += other.gameObject.GetComponent<ItemInfo>().money;
GameManager.instance.GetMoney();
Debug.Log("총 코인 수: " + GameManager.instance.money);
//money += enemyMove.money_result();
}
Inventory.instance.AddInventory(other.gameObject);
other.gameObject.SetActive(false);
//Destroy(other.gameObject);
}
}
private void OnCollisionEnter2D(Collision2D other)
{
//x를 누르고 있을 때 충돌시??
//if(other.gameObject.tag == "Monster"){
// if(anim.GetCurrentAnimatorStateInfo(0).IsName("Player_Attack")){
// OnAttack(other.transform);
// }
//Obstacle 콜라이더 때문에 충돌이밴트 못생겨서 타일맵으로 다시찍어야함
// else{
// OnDamaged(other.transform.position);
// }
//}
if (other.gameObject.tag == "Monster")
{
OnDamaged(other.transform.position);
//부딪힌 오브젝트(몬스터)의 스크립트 가져오기
monster = other.gameObject.GetComponent<MonsterMove>();
hp = hp - monster.op;
}
else if (other.gameObject.tag == "Obstacle")
{
OnDamaged(other.transform.position);
thorn = other.gameObject.GetComponent<Hurdle>();
hp = hp - thorn.op;
}
else if (other.gameObject.tag == "Door")
{
SceneManager.LoadScene("Map2");
}
}
void OnDamaged(Vector2 tartgetPos)
{
if (hp > 0)
{
gameObject.layer = 12; //playerDamaged Layer number가 12로 지정되어있음
//깜박이는 함수를 불러오기
StartCoroutine("Blinking");
//맞으면 튕겨나가는 모션
int dirc = transform.position.x - tartgetPos.x > 0 ? 1 : -1;
//튕겨나가는 방향지정 -> 플레이어 위치(x) - 충돌한 오브젝트위치(x) > 0: 플레이어가 오브젝트를 기준으로 어디에 있었는지 판별
//> 0이면 1(오른쪽으로 튕김) , <=0 이면 -1 (왼쪽으로 튕김)
rigid.AddForce(new Vector2(dirc, 1) * 20, ForceMode2D.Impulse); // *7은 튕겨나가는 강도를 의미
Invoke("OffDamaged", 2); //2초의 딜레이 (무적시간 2초)
}
else
{
// 생명이 0이하면 죽음
//플레이어가 죽는 모션(이패트)
Die();
//UI에 결과 출력
Debug.Log("죽었습니다.");
}
}
//깜빡이는함수
IEnumerator Blinking()
{
//Debug.Log("Blink");
int countTime = 0;
while (countTime < 10)
{
if (countTime % 2 == 0)
{
spriteRenderer.color = new Color(1, 1, 1, 0.4f);
}
else
{
spriteRenderer.color = new Color(1, 1, 1, 0.7f);
}
yield return new WaitForSeconds(0.3f);
countTime++;
}
spriteRenderer.color = new Color(1, 1, 1, 1);
yield return null;
}
void OnAttack(Transform enemy)
{
MonsterMove enemyMove = enemy.GetComponent<MonsterMove>();
enemyMove.OnDamaged(op);
if (enemyMove.hp < 0)
{
enemyMove.Die();
}
if (GameManager.instance.exp >= 100)
{
GameManager.instance.LevelUp();
}
}
void OffDamaged()
{ //무적해제함수
gameObject.layer = 8; //플레이어 레이어로 복귀함
spriteRenderer.color = new Color(1, 1, 1, 1); //투명도를 1로 다시 되돌림
}
void Move()
{
//이동
float h = GameManager.instance.isAction ? 0 : Input.GetAxisRaw("Horizontal");
rigid.AddForce(Vector2.right * h * 3, ForceMode2D.Impulse);
//최대 속력
if (rigid.velocity.x > maxSpeed) //Right Max Speed velocity : 리지드바디의 현재 속도
{
rigid.velocity = new Vector2(maxSpeed, rigid.velocity.y);
}
else if (rigid.velocity.x < maxSpeed * (-1)) //Left Max Speed
{
rigid.velocity = new Vector2(maxSpeed * (-1), rigid.velocity.y);
}
}
void Jump()
{
//점프 판단 위한 빔쏘기
if (rigid.velocity.y < 0)
{
Debug.DrawRay(rigid.position, Vector3.down * 4.7f, new Color(0, 1, 0)); //빔을 쏨
RaycastHit2D rayHit = Physics2D.Raycast(rigid.position, Vector3.down, 4.7f, LayerMask.GetMask("Platform"));
if (rayHit.collider != null) //빔에 맞는 내용물이 있을 때
{
//if (rayHit.distance < 4f)
anim.SetBool("isJump", false);
}
}
}
void Die()
{
isDie = true;
rigid.velocity = Vector2.zero;
//죽음 effect(외적인거)
//Sprite Alpha : 색상 변경
spriteRenderer.color = new Color(1, 1, 1, 0.4f);
//Sprite Flip Y : 뒤집어지기
spriteRenderer.flipY = true;
//Collider Disable : 콜라이더 끄기
capcollider.enabled = false;
//Die Effect Jump : 아래로 추락(콜라이더 꺼서 바닥밑으로 추락함 )
rigid.AddForce(Vector2.down * 20, ForceMode2D.Impulse);
GameManager.instance.UIRestartBtn.SetActive(true);
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class QuestManager : MonoBehaviour
{
public ItemData itemData;
public int questId;
public int questActionIndex; //퀘스트 npc대화 순서
Dictionary<int, QuestData> questList;
public GameObject[] questObject;
void Awake()
{
questList = new Dictionary<int, QuestData>();
GenerateData();
}
void GenerateData()
{
//생성자 이용 (string name, int[] npcid)
questList.Add(10, new QuestData("진행중인 퀘스트 없음", new int[] { 1000 }));
questList.Add(20, new QuestData("탈리아를 구출해라", new int[] { 200, 1000 }));
questList.Add(30, new QuestData("진행중인 퀘스트 없음", new int[] { 0 }));
}
public int GetQuestTalkIndex(int id) // Npc Id를 받아 퀘스트 번호를 반환하는 함수
{
return questId + questActionIndex;
}
public string CheckQuest() //오버로딩
{
//return Quest Name
return questList[questId].questName;
}
public string CheckQuest(int id) //npc id
{
//해당 퀘스트가 종료 전일 때
if (id == questList[questId].NpdId[questActionIndex])
{
// questList에서 questId에 해당하는 퀘스트에서 ,
//이 퀘스트에 참여하는 npc의 순서번호(questActionIndex)와 입력받은 npc id가 같은 경우 -> 퀘스트 종료 전
questActionIndex++;
}
//Control Quest Object
ControlObject();
//퀘스트가 종료되었을 때
if (questActionIndex == questList[questId].NpdId.Length)
{
//퀘스트 리스트에 있는 NpcId(퀘스트에 참여하는 npc) 수와 같을 때 -> 퀘스트 종료
NextQuest();
}
return questList[questId].questName;
}
void NextQuest()
{
questId += 10;
questActionIndex = 0;
}
void ControlObject()
{
switch (questId)
{
case 10:
if (questActionIndex == 1){
itemData.items[3].itemValue=f;
Debug.Log("100%로 변경되었습니다");
}
//questObject[0].GetComponent<ItemData>().items[3].isQuestStart = true;
//Debug.Log(questObject[0].GetComponent<ItemData>().items[3].isQuestStart);
// questObject[0].SetActive(true);
break;
case 20:
//if(questActionIndex == 1) //10번 퀘스트를 끝마치면 열쇠 등장
// questObject[0].SetActive(true);
//if (questActionIndex == 1) //10번 퀘스트를 끝마치면 열쇠 등장
//questObject[0].SetActive(false);
if (questActionIndex == 2) //퀘스트를 끝마치면 철창이 사라짐
questObject[0].SetActive(false);
break;
case 30:
if (questActionIndex == 1) //퀘스트를 끝마치면 철창이 사라짐
questObject[0].SetActive(false);
break;
}
}
//public void CheckQuestId(GameObject gameobj){
// if(gameobj.name=="탈리아"){
// if(questId!=10) questId=10;
// if(questId==20) questId=0;
// }
//}
}
GameManager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class GameManager : MonoBehaviour
{
//Script
public PlayerMove player;
public TalkManager talkManager;
public QuestManager questManager;
public int Stage;
public int Level;
public int exp;
public int money;
public int maxEXP;
//public int money;
public static GameManager instance;
public bool isEnterSaveJone = false;
//UI Object
public Text UI_Money_Text;
public Text UI_Level_Text;
public Slider HP_BAR;
public Slider EXP_BAR;
//퀘스트 버튼
public GameObject UI_QuestBtn;
public GameObject UI_QuestIMG;
public Text UI_QuestText;
public Text UI_QuestNameText;
public GameObject UI_inventoryBtn;
public GameObject UI_SettingBtn;
//대화창용
//대화창 UI 및 변수
public GameObject talkPanel;
public Image portraitImg;
public Text UINameText;
public Text UITalkText;
public Text UIInfoText;
public GameObject scanObject;
public bool isAction; //대화창 활성화 상태
public int talkIndex;
public string name;
//Retry
public GameObject UIRestartBtn;
private void Start()
{
instance = this;
Level = 1;
maxEXP = 100;
}
private void Awake()
{
}
private void Update()
{
//UI 텍스트
UI_Level_Text.text = "Lv." + Level;
//Debug.Log("Level(Update): " + Level);
UI_Money_Text.text = money.ToString();
//UI 체력바
HP_BAR.value = (float)player.hp / (float)player.maxHP;
EXP_BAR.value = (float)exp / 100;
}
public void LevelUp()
{
exp = exp - 100;
Level++;
UI_Level_Text.text = "Lv." + Level;
}
public void GetMoney()
{
UI_Money_Text.text = money.ToString();
}
public void Action(GameObject scanObj)
{
if(scanObj!=null)
{
scanObject = scanObj; //player에 scanObject를 GameManager의 scanObject에 넣음
}
name = scanObject.name;//이름저장
//UITalkText.text = "이것은 "+scanObject.name+"이다.";
ObjData objData = scanObject.GetComponent<ObjData>();
Talk(objData.id, objData.isNPC);
talkPanel.SetActive(isAction); //대화창 활성화 상태에 따라 대화창 활성화 변경
}
//실제 대사들을 UI에 출력하는 함수
void Talk(int id, bool isNPC)
{
int questTalkIndex = questManager.GetQuestTalkIndex(id); // 조사한 obj의 id를 넘겨 퀘스트 id를 반환받음
string talkData = talkManager.GetTalk(id + questTalkIndex, talkIndex); //id에 퀘스트 id를 더하면 -> 해당 id를 가진 오브젝트가 가진 퀘스트의 대화를 반환하게 만들기
if (talkData == null) //반환된 것이 null이면 더이상 남은 대사가 없으므로 action상태변수를 false로 설정
{
isAction = false;
//player.scanObject = null;
//scanObject = null;
//player.scanObject == null;
talkIndex = 0; //talk인덱스는 다음에 또 사용되므로 초기화해야함
Debug.Log(questManager.CheckQuest(id));
Text questName = UI_QuestIMG.GetComponentInChildren<Text>();
questName.text = questManager.CheckQuest(id);
return; //void에서의 return 함수 강제종료 (밑의 코드는 실행되지 않음)
}
if (isNPC)
{
UIInfoText.text = "";
UITalkText.text = talkData.Split(':')[0]; //구분자로 문장을 나눠줌 0: 대사 1:portraitIndex
portraitImg.sprite = talkManager.GetPortrait(id, int.Parse(talkData.Split(':')[1]));
if (int.Parse(talkData.Split(':')[1]) == 0)
{
UINameText.text = "백설공주";
}
else
{
UINameText.text = name;
}
portraitImg.color = new Color(1, 1, 1, 1);
}
else
{
UINameText.text = "";
UITalkText.text = "";
UIInfoText.text = talkData;
portraitImg.color = new Color(1, 1, 1, 0);
}
//다음 문장을 가져오기 위해 talkData의 인덱스를 늘림
isAction = true; //대사가 남아있으므로 계속 진행되어야함
talkIndex++;
}
public void Restart()
{ //재시작이므로 처음부터 다시시작이라 scene 0번
//Time.timeScale = 1; //플레이어가 다시 움직일 수 있도록 함
SceneManager.LoadScene(0);
}
public void QuestButtonStart()
{
//Text questName = UI_QuestIMG.GetComponentInChildren<Text>();
//questName.text = questManager.CheckQuest(id);
if (UI_QuestIMG.activeSelf == true)
UI_QuestIMG.SetActive(false);
else
UI_QuestIMG.SetActive(true);
}
}
728x90