AR 같은 작업을 사용할 때, 주로 인풋을 raycast로 받게 되는데.
rayCast위치를 Input.GetTouch(0).position으로 받아버리면, 에디터의 플레이모드에서 확인할 수 없다는 단점이 있는데. (마우스 클릭밖에 되질 않으니까..)
이 때 #if 와 같은 전처리 지시어를 사용한다면, 인풋을 유니티 에디터에서는 클릭으로만, 그 외의 플랫폼에서는 터치로 인풋을 받아서 ray를 쏠 수 있다.
<rayCastManager.cs 중 일부>
public List<RaycastHit> getTouchRayHit()
{
List<RaycastHit> rayHitList = new List<RaycastHit>();
#if UNITY_EDITOR
if (Input.GetMouseButtonDown(0))
{
ray = Const.arCamera.ScreenPointToRay(Input.mousePosition);
Physics.Raycast(ray, out raycastHit);
}
else return rayHitList;
#else
if (Input.touchCount == 0) return rayHitList;
touch = Input.GetTouch(0);
if (touch.phase != TouchPhase.Began) return rayHitList;
ray = Const.arCamera.ScreenPointToRay(touch.position);
#endif
Physics.Raycast(ray, out raycastHit);
if (raycastHit.transform != null &&
raycastHit.transform.TryGetComponent<_objFrame>(out _objFrame _obj))
_obj._rayHit();
rayHitList.Add(raycastHit);
return rayHitList;
}
line 5, 12, 19번이 각각 전처리 지시어로써 어느 부분을 컴파일할지 알려주는 부분인데. #if UNITY_EDITOR라는 조건에 따라, 에디터상에서는 line 5 ~ 11번이, 그 이외의 플랫폼에서는 13 ~ 18번이 컴파일되게 된다.
'개발 조각글' 카테고리의 다른 글
Unity UI 컴포넌트 캐싱[0] (0) | 2022.05.20 |
---|---|
Unity 씬에서 선택한게 하이라키에서 안잡힐 때 (0) | 2022.03.21 |
linux상에서의 스택 제한 (0) | 2021.09.02 |
git id / pw 캐싱 (0) | 2021.07.27 |
mac에서 norminette설치가 안될 때 (0) | 2021.07.09 |