<Unity UGUI><EasyTouch> 使用EasyTouch, 摇杆在Dynamic模式下,点击UI控件也会弹出的问题解决

本文介绍了在Unity中使用EasyTouch插件时,遇到的Dynamic stick模式下虚拟摇杆与UGUI控件冲突的问题。当尝试点击UI元素时,虚拟摇杆仍然弹出。为了解决这个问题,文章分析了EasyTouch的源码,并提供了一个解决方案,即在激活虚拟摇杆前检查EventSystem.current.IsPointerOverGameObject(),以确保没有触碰到UGUI元素。同时,文中还引用了Unity官方论坛上的代码片段,适用于PC和触屏设备。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请标明出处:http://blog.youkuaiyun.com/u013015161/article/details/46495561

使用EasyTouch插件,其提供的虚拟摇杆有一个Dynamic stick属性, 勾选之后, 只有当鼠标或者手指触摸到屏幕, 才会在手指或鼠标触碰的位置出现虚拟摇杆。

当场景中存在UI控件时,会出现以下场景。


很显然 , 当玩家点击按钮的时候依然弹出虚拟摇杆是不合理的。


解决这个问题,首先得看虚拟摇杆何时会弹出, 在EasyJoystick.cs中可以找到以下代码:

if ((showZone && areaTexture!=null && !dynamicJoystick) || (showZone && dynamicJoystick && virtualJoystick && areaTexture!=null) 
				|| (dynamicJoystick && Application.isEditor && !Application.isPlaying)){
				if (isActivated){
					GUI.color = areaColor;
					
					if (Application.isPlaying && !dynamicJoystick){
						EasyTouch.RemoveReservedArea( areaRect );
						EasyTouch.AddReservedArea( areaRect );
					}
				}
				else{
					GUI.color = new Color(areaColor.r,areaColor.g,areaColor.b,0.2f);	
					if (Application.isPlaying && !dynamicJoystick){
						EasyTouch.RemoveReservedArea( areaRect );	
					}
				}		
				
				if (showDebugRadius && Application.isEditor){
					GUI.Box( areaRect,"");				
				}

                GUI.DrawTexture( areaRect, areaTexture,ScaleMode.StretchToFill,tr
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值