(Unity)EasyTouch插件去掉EasyTouchControlsCanvas后摇杆失灵问题

    开发使要用到摇杆,选择了使用EasyTouch插件(在此具体创建等基本操作就不多说,网上很多),由于创建Joysick时自带一个EasyTouchControlsCanvas为父节点,里面挂了一个Canvas用以渲染。但一般项目用,已有渲染UI的Canvas并且这个摇杆属于UI,是放在UI里 节点下的,所以要去掉EasyTouchControlsCanvas。

    直接去掉,把Joysick放在UI下面,如果UI的渲染模式不是 Screen Space - Overlay,会发现里面摇杆失灵了,这里最快的方法是直接改成该模式。如是不改,则按以下操作

这里找到找到EasyTouch中使用到Canvas的代码:

一、先在项目中把其获取的Canvas改为当前项目中UI的Canvas(找对应该的调用地方)

二、在ETCJoystick.cs角本里面,修改以下代码。

public void OnDrag(PointerEventData eventData){

...
     /*  by game winner LUO
             *  删除原EasyTouchControlsCanvas,用项目UICanvas替代
             *  
			if (!isNoReturnThumb){
				thumbPosition =  (eventData.position - eventData.pressPosition) / cachedRootCanvas.rectTransform().localScale.x;
			}
			else{
				thumbPosition =((eventData.position - noReturnPosition) /cachedRootCanvas.rectTransform().localScale.x) + noReturnOffset;
			}

			if (isNoOffsetThumb){
			    thumbPosition =  (eventData.position - (Vector2)cachedRectTransform.position) / cachedRootCanvas.rectTransform().localScale.x;
			}
            */


            if ( !isNoReturnThumb )
            {
                thumbPosition = ( eventData.position - eventData.pressPosition );
            }
            else
            {
                thumbPosition =  ( eventData.position - noReturnPosition ) + noReturnOffset;
            }

            if ( isNoOffsetThumb )
            {
                thumbPosition = ( eventData.position - ( Vector2 ) cachedRectTransform.position ) ;
            }


你可能感兴趣的:(Unity3D)