Announcement

Collapse
No announcement yet.

iOS에서 OnInputTouch() 함수 퍼포먼스에 대해 질문합니다.

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    iOS에서 OnInputTouch() 함수 퍼포먼스에 대해 질문합니다.

    iOS개발중 퍼포먼스에 큰 영향을 미쳐 문제가되어 질문합니다.

    ipad에서 인풋 처리를 하던 중 호출되는 특정 함수때문에 프레임이 10~20, 심하면 30이상 떨어지는 현상이 발생합니다.

    Code:
    /**
     * OnInputTouch is a low level handler for getting the actual touch data
     */
    delegate OnInputTouch(int Handle, ETouchType Type, Vector2D TouchLocation, float DeviceTimestamp, int TouchpadIndex);
    ▲위의 델리게이트를

    Code:
    	//로컬 MobilePlayerInput으로의 레퍼런스 구하기
    	MPI = MobilePlayerInput(PlayerInput);
    
    	//델리게이트로의 인풋 핸들러함수 접근
    	MPI.OnInputTouch = HandleInputTouch;
    ▲이렇게 한 뒤

    Code:
    function HandleInputTouch(int Handle, ETouchType Type, Vector2D TouchLocation, float DeviceTimeStamp, int TouchpadIndex)
    {
    	if(Type == Touch_Began)
    	{
    		bPendingTouch = TRUE;
    	}
    	//터치 진행중
    	else if(Type == Touch_Moved)
    	{
    	}
    	//터치 끝
    	else if(Type == Touch_Ended)
    	{
    		bPendingTouch = FALSE;
    	}
    }
    ▲위처럼 사용합니다.

    실제 처리되는 내용은 삭제하고 문제가 되는 최소한의 부분만 붙여넣었습니다.


    실제로 이정도의 코드 처리로도 퍼포먼스에 큰 영향을 미치더군요.
    OnInputTouch()를 사용하지 않고, 스크린 터치 이벤트를 처리할수있는 함수는 없을까요?


    필요한기능은 그저 "터치된곳의 스크린좌표 X"를 얻어오기만 하면 됩니다.

    #2
    퍼포먼스 문제는 차차 개선이 되어 나갈 것으로 생각됩니다.


    꼼수를 하나 알려 드리자면

    콜백을 언리얼에서 받는 것이 아니라

    스케일폼의 이벤트로 받는 방법이 있습니다.


    콜패스가 더 길어지겠지만

    언리얼이 내부적으로

    us와 다른 방법으로 스케일폼 터치 인풋을 처리하고 있다면

    퍼포먼스가 나아질 가능성이 있습니다.


    물론 퍼포먼스가 떨어질 가능성이 더 높습니다.

    Comment

    Working...
    X