본문 바로가기
  • Always Awake
프로그래밍,Tools/Unity,C#

[Unity] 레이캐스트(Raycast) 사용 시 out 키워드의 의미

by NerdyBoy 2022. 4. 12.

유니티 엔진에서 제공하는 레이캐스트(Raycast)를 사용할 때,

out 이라는 키워드가 눈에 띈다.

이게 굉장히 생소하기 때문에 뭔지 한번 알아보자~

 

1. 레이캐스트(Raycast) 란? 

레이캐스트란 말그대로 광선(ray)를 발사하여 오브젝트가 존재하는지 판별하는 유니티 물리엔진의 메소드이다.

레이캐스트

위 사진은 카메라로부터 광선을 발사하지만, 광선 발사지점을 어느곳이든 지정할 수 있고, 방향(Direction), 거리(Distance) 등 의 조절이 가능하다. 광선을 발사해서 오브젝트와 부딫히는 부분을 Hit point 라 한다.

 

아래와 같이 Physics 클래스를 통해 사용가능 하며, 다양한 파라미터를 인자로 넣을 수 있다.

Physics.Raycast(transform.position, direction, out hit, distance)

물체 충돌시 true 를 반환한다.

 

 

2. out 키워드

위 예문을 보면 파라미터로 out hit 을 넣는것을 볼 수 있다(여기서 hit 은 UnityEngine의 RaycastHit 구조체 타입이다.). 그럼 out은 무엇일까. C#에서는 out을 직접 매개변수의 값을 바꿀 수 있는 매개변수 한정자로 사용한다. 아래 예문을 보자.

 

int initializeInMethod;
initiallizeInMethod = OutArgExample(initializeInMethod);
Console.WriteLine(initializeInMethod);     // value is now 44

void OutArgExample(out int number)
{
    number = 44;
    return number;
}

출력 : 1

보통 매개변수의 값을 바꾸려면 위 구문 같이 return 키워드를 사용해서, 직접 할당해 주어야 한다. 이제 out 키워드를 사용한 예문을 보자

int initializeInMethod;
OutArgExample(out initializeInMethod);
Console.WriteLine(initializeInMethod);     // value is now 44

void OutArgExample(out int number)
{
    number = 44;
}

출력 : 44

변수에 직접할당을 하지 않아도 한정자를 통해 바로 값이 변한다.

 

 

3. 그래서

결국 레이캐스트에 파라미터로 들어가는 out 키워드는 위에서 봤던 레이(Ray)가 물체와 충돌하는 지점인 Hit Point를 RaycastHit 구조체 변수(hit)에 담아준다는 뜻이다.

 

 


출처

 

out 매개 변수 한정자 - C# 참조

out 매개 변수 한정자(C# 참조) 아티클 04/06/2022 읽는 데 7분 걸림 기여자 14명 이 문서의 내용 --> out 키워드를 사용하면 참조를 통해 인수를 전달할 수 있습니다. 이 키워드는 정식 매개 변수를 위해

docs.microsoft.com

 

[Unity5/11일차] Raycast(레이캐스트), 캐릭터 이동

(클릭하면 커져요) * 이해를 돕기위한 그림들.. 아니 보물들.. * 3D 가상공간에 마우스를 클릭하면 이벤트...

blog.naver.com

 

댓글