📝 24.01.29
팀 과제 작업을 마무리 하고 있다. 플레이에는 문제 없을 정도로 완성이 되었고, 몇몇 버그와 꾸밈 요소 등을 추가하면 될 것 같다.
오늘은 새로운 것을 하나 배웠다.
기존에는
gameObejct.Tag == "MapPortal"
로 태그를 비교했었는데,
gameObject.CompareTag("MapPortal")
로 Compare.Tag()
메서드를 사용하면 효율면에서 더 좋다고 한다.
그 이유는 .Tag
방식으로 태그를 알아내면 getter가 호출되는 것으로, string을 복사 생성하는 것이기 때문이다. 반면 CompareTag()
는 동적할당 없이 tag 비교가 가능하도록 구현된 메서드라고 한다. 따라서 앞으로 Collider
나 Trigger
에서 사용될 중요한 메서드이므로 확실히 알아두어야한다.
해당 메서드를 활용해 현재 ShopPortal이냐 MapPortal이냐 여부를 분별하여 각기 다른 함수가 실행되도록 코드를 수정했다.
MapPortal.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MapPortal : MonoBehaviour
{
bool isUsed = false;
private void OnTriggerEnter2D(Collider2D other)
{
if(gameObject.CompareTag("MapPortal") && !isUsed)
{
if(other.CompareTag("Player"))
{
GameManager.Instance.Teleport(false);
isUsed = true;
}
} else if(gameObject.CompareTag("ShopPortal"))
{
if (other.CompareTag("Player"))
{
MapCreator.instance.CreateNextMap();
}
}
}
}