준비
1. Tutorial 빈 게임오브젝트 생성 및 UI 생성
Tutorial 빈 게임오브젝트에 Canvas 추가, Canvas의 자식으로 튜토리얼 UI 생성
2. Area 설정
Area가 필요한 경우, Tutorial 빈 게임오브젝트에 Area를 IsTrigger로 설정, 햇갈리지 않게 Tutorial의 숫자와 맞춰준다.
스크립트
1. IslandTutorial
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class IslandTutorial : MonoBehaviour
{
[Header("Tutorial")]
[SerializeField] private GameObject[] _tutorials;
[HideInInspector] public bool[] IsTutorialActive; // 단 한번만 실행하기 위해
private bool _isPause;
void Start()
{
IsTutorialActive = new bool[_tutorials.Length];
for (int i = 0; i < _tutorials.Length; i++)
{
IsTutorialActive[i] = false;
}
TutorialActive(0);
}
void Update()
{
// 마우스 왼쪽 클릭 시, 튜토리얼 창 끄기
if(_isPause == true && Input.GetMouseButtonDown(0))
{
foreach (GameObject tutorial in _tutorials)
{
tutorial.SetActive(false);
}
Time.timeScale = 1f;
_isPause = false;
}
// 특정 조건에서 튜토리얼 실행
if(GameManager.I.PlayerManager.Player.GetComponent<ResourceCollector>().Resources >= 10 && !IsTutorialActive[3])
{
TutorialActive(3);
}
}
public void TutorialActive(int num)
{
_tutorials[num].SetActive(true);
Time.timeScale = 0f;
_isPause = true;
IsTutorialActive[num] = true;
}
}
2. IslandTutorialCollider
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class IslandTutorialCollider : MonoBehaviour
{
private IslandTutorial _islandTutorial;
private void Start()
{
_islandTutorial = transform.parent.gameObject.GetComponent<IslandTutorial>();
}
private void OnTriggerEnter(Collider other)
{
if(transform.name == "Area1" && !_islandTutorial.IsTutorialActive[1])
{
if(other.CompareTag("Player")) _islandTutorial.TutorialActive(1);
}
else if (transform.name == "Area2" && !_islandTutorial.IsTutorialActive[2])
{
if (other.CompareTag("Player")) _islandTutorial.TutorialActive(2);
}
else if (transform.name == "Area4" && !_islandTutorial.IsTutorialActive[4])
{
if (other.CompareTag("Player")) _islandTutorial.TutorialActive(4);
}
else if (transform.name == "Area5" && !_islandTutorial.IsTutorialActive[5])
{
if (other.CompareTag("Player")) _islandTutorial.TutorialActive(5);
}
}
}
3. 구현 순서
1. IslandTutorial 스크립트 연결
Tutorial 게임오브젝트에 스크립트를 연결하고, Tutorials 배열에 Canvas에 있는 SetActive 할 UI를 연결해준다.
2. IslandTutorialCollider 스크립트 연결
각각 Area에 모두 스크립트를 연결하고, 콜라이더 범위를 설정하고 IsTrigger 체크를 해준다.
'유니티' 카테고리의 다른 글
게임 종료 (0) | 2024.02.07 |
---|---|
로딩 씬 구현 (0) | 2024.02.01 |
DataManager (0) | 2024.01.30 |
AddForce (0) | 2024.01.26 |
범위 내 콜라이더 판별 (OverlapSphere) (0) | 2024.01.17 |