Unity: ref와 out (매개변수를 참조)

이재형·2024년 6월 18일
0
post-thumbnail
post-custom-banner

Unity 공부

배운 내용

문제 발생: 메서드로 매개 변수를 넣었는데 변수의 값이 변하지 않음

문제 진행: 매개 변수로 값이 참조가 되지 않았기 때문에 일어난 문제

문제 해결: 검색하여 ref와 out을 이용하여 참조를 할 수 있는 방법을 알아내서 해결하였음

1. ref

여러 메서드를 사용할 때 매개 변수로 값을 넣을 때 참조를 시키는 방법이다.

// 수동 공격 강화
public void AttackUpgrade()
{
    if (UpdateUI(attackText, ref attackGold))
    {
        attack *= 2;
    }
}

// 자동 공격 강화
public void AutoAttackUpgrade()
{
    if (UpdateUI(autoAttackText, ref autoAttackGold))
    {
        autoAttack *= 2;
    }
}

// 자동 시간 강화
public void AutoAttackTimeUpgrade()
{
    if (UpdateUI(autoTimeText, ref autoTimeGold))
    {
        autoTime -= 0.2f;
    }
}

// UI 갱신 및 강화 관련 값 변경
public bool UpdateUI(TextMeshProUGUI upgradetext, ref int upgradeGold)
{
    if (currentGold > upgradeGold)
    {
        currentGold -= upgradeGold;
        upgradeGold *= 2;
        upgradetext.text = upgradeGold.ToString() + "G";
        goldText.text = "Gold: " + currentGold.ToString() + "G";
        return true;
    }
    return false;
}

설명: 참조할 변수에 ref를 추가하고 메서드에서도 같은 변수 타입에 ref를 추가하여 사용하면 된다.


2. out

변수를 지정하고 값을 초기화 시키지 않고 메서드 안에서 참조하여 정할 때 사용하면 된다.

void Start()
{
	int result;
	SumNum(5, 3, out result);
    Debug.Log(result);
}

private void SumNum(int a, int b, out int result)
{
	result = a + b;
}

설명: ref와 똑같이 참조할 변수 앞에 out을 추가하여 추가하여 사용을 하면 된다.


3. ref와 out의 공통점, 차이점

ref와 out은 둘 다 변수를 참조할 수 있다는 점이 공통점이다.
차이점으로는 ref의 경우 메서드 실행 전에 초기화를 해야하는 특징이 있으며,
out은 메서드 안에서 초기화를 해줘야 하는 특징이 있다.

변수를 사용할 때 한 스크립트에서 사용 가능한 지역 변수와 메서드안에서 사용 가능한 지역 변수 하나의 프로젝트에서 사용 가능한 정적 변수 여기에서 끝날 줄 알았는데 용도에 따라서 많은 기능이 더 있다는 것을 알게 되었다.


정리

배운 내용

1. ref와 out: 메서드 전에 초기화한 것이냐 아니냐의 차이로 사용의 용도가 다르다.

해결 못한 문제

1. 없음

문제점

1. 없음

profile
한국사람
post-custom-banner

0개의 댓글