2016-10-16 2 views
0

간단히 말해서 Unity에서 많은 미리 정의 된 함수 (사용하는 간단한 게임 개발 플랫폼)는 값 (예 : 좌표)을 반환합니다. 특정 조건이 충족되면 false를 반환합니다. 컴파일러는 항상 반환 형식으로 변환을 찾고 함수가 변환을 반환하도록 선언되었으므로 부울을 반환하지 않습니다.특정 값을 반환하는 함수가 필요하고 그렇지 않으면 false를 반환합니다.

Transform SelectObject() { 
    RaycastHit hit; 
    Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition); 
    if (Physics.Raycast (ray, out hit, unitLayer)) 
     return hit.transform; 
    else 
     return false; 
} 

특정 데이터 형식을 반환하는 방법, 함수가 작업에 '실패'하면 부울 (false)을 반환하는 방법은 무엇입니까?

+0

에도 미리 정의 된 함수는 어딘가에 문서화되어야한다. 어쩌면 당신은 그런 행동의 몇 가지 예를 보길 원할 것입니다. 나는 화합의 대상이 아니지만 여기서 묘사하고있는 것은 이상하게 들린다. 커버 아래에있는 "null"리턴을 false로 변환하는 몇 가지 ** 암시 적 ** 변환이 없다고 확신합니까? – GhostCat

+1

@GhostCat 대답은 내 코드 전체에서 바로 발생했습니다. 나는 "out"키워드의 기본 개념을 이해하지 못했습니다. "Physics.Raycast()"와 같은 미리 정의 된 특정 기능은 특정 조건이 충족되었는지 여부에 따라 true 또는 false를 반환하지만 이러한 함수는 "out"키워드를 사용하여 다른 변수를 통해 추가 정보를 전달합니다. 효과적으로 부울 및 일부 추가 정보를 반환합니다. –

답변

1

나는 잠시 동안 유니티를 사용하지 않은,하지만 난 당신이 바로이 작업을 수행 할 필요가 있다고 생각 :

Transform SelectObject() { 
    RaycastHit hit; 
    Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition); 
    if (Physics.Raycast (ray, out hit, unitLayer)) 
     return hit.transform; 
    else 
     return null; 
} 

유니티 UnityEngine.Object에서 부울로 파생 개체를 변환하는 유틸리티를 가지고 거짓 객체 인 경우를 null, 다른 경우는 true 이것은 이상한 일이지만 사실은 나를 위해 일했습니다.

난 당신이 암시 적으로이 같은 논리 값으로 개체를 변환 변환 할 수 있습니다 생각 :

bool b = SelectObject(); 
관련 문제