TIL - 23.12.27

Amberjack·2023년 12월 28일
0

TIL

목록 보기
5/83

오늘의 문제점

카드가 뒤집어지는 와중에 다른 카드를 광클하면 카드가 사라짐!

내가 발견하지도, 해결하지도 않은 문제이지만 그래도 팀원분의 코드에 감명을 받아서 적어보았다.

카드 두 장을 비교하여 두 카드가 틀릴 경우, 카드가 다시 뒤집어지는 동안 다른 카드를 광클하면 그 카드가 한번에 첫 번째와 두 번째 카드에 입력되어 같은 카드 판정으로 인해 사라져버리는 문제였다.

내가 확인해본 바로는 카드를 뒤집을 때 애니메이션을 적용하기 위해 Invoke를 사용했는데, 이 Invoke가 되는 시간동안 광클을 하면 문제가 발생했다.

Invoke를 없애면 될 문제였지만 애니메이션을 위해서는 필요했기 때문에 고민을 하던 찰나, 팀원분이 코드를 수정하셨다.

public void openCard()
{
	// 카드가 2장 뒤집혀 있는 동안 다른 카드들 클릭 막기
	if (GameManager.I.cardCounter > 1) return;

	if (GameManager.I.firstCard == null)
	{
		openEffect();
		GameManager.I.firstCard = gameObject;

		// 첫 번째 카드가 뒤집힌 시간 저장하기
		check_time = GameManager.I.gameTime;
	} else
	{
		// 첫번째카드오브젝트가 다를때만
		if(GameManager.I.firstCard != gameObject)
		{
			openEffect();
			GameManager.I.secondCard = gameObject;
			GameManager.I.isMatched();
		}
	}
}

바로 if(GameManager.I.firstCard != gameObejct)의 조건식을 넣은 것이다.
gameObject는 현재 선택되어 C# Script를 호출한 gameObject를 가리킨다.
즉, if문의 조건을 풀어쓰면 "현재 선택된 gameObject가 firstCard의 Object와 같지 않을 때에 secondCard가 선택되는 것이고, gameObject와 firstCard가 같은 카드일 경우에는 if문에 들어가지 않는 것이다.

정리

어떤 gameObject가 C# Script를 호출하면, 해당 Object는 그 C# Script에서 gameObject를 통해 부를 수 있다.

오늘 배운 점

audioManager를 싱글톤화 시키기

gameManager와 마찬가지로 audioManager 또한 싱글톤시켜서 사용할 수 있다.
오늘 사용했던 경우는, 게임에서 일시정지 버튼을 누르면 게임의 BGM 또한 일시정지 되도록 만들 때 사용했다.

// audioManager.cs

public static audioManager I;

public AudioClip bgmusic;
public AudioSource audioSource;

private void Awake()
{
	I = this;
}

void Start()
{
	audioSource.Clip = bgmusic;
    audioSource.Play();
}

...

이렇게 audioManager를 싱글톤시키면 외부에서 audioManager.I.audioSource를 통해 외부에서도 호출할 수 있다.

public class stopGame : MonoBehaviour
{
    //stopPanel 호출
    public GameObject stopPanel;
    // Start is called before the first frame update
    void Start()
    {
       
    }

    // Update is called once per frame
    void Update()
    {
      
    }
    public void stopgame()
    {
        audioManager.I.audioSource.Pause();
        stopPanel.SetActive(true);
        Time.timeScale = 0;
    }
}

일시정지 메뉴 뒤로 배경 어둡게 만들기

평소 화면 ▼

일시정지 화면 ▼

일시 정지 화면 Object에 하위 Object로 UI → Panel을 추가하고 색을 (0, 0, 0, 100)으로 주었다.

일시 정지를 할 때, stopPanel과 함께 호출되기 때문에 뒷배경을 어둡게 만들 수 있었다.

0개의 댓글