From 9663e8a6de00b2d16feea8fbe7f398d3d73d0ba5 Mon Sep 17 00:00:00 2001 From: barry Date: Sat, 13 Jun 2026 19:58:55 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A1=E3=80=81=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=BC=A9=E6=94=BE=E5=92=8C=E6=8B=96=E6=9B=B3=EF=BC=88=E6=9C=AA?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=89=88=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../package/Arrow_game/Arrow_gameBinder.cs | 1 + .../FGUI/package/Arrow_game/btn_big.cs | 29 +++ .../FGUI/package/Arrow_game/btn_big.cs.meta | 11 + .../FGUI/package/Arrow_game/com_arrow_game.cs | 20 +- .../FGUI/Arrow_game_atlas0.png | Bin 18429 -> 19834 bytes .../FGUI/Arrow_game_fui.bytes | Bin 5215 -> 6666 bytes .../Scripts/ModuleUI/ArrowGame/ArrowGameUI.cs | 242 +++++++++++++++++- 7 files changed, 291 insertions(+), 12 deletions(-) create mode 100644 Assets/ChillConnect/FGUI/package/Arrow_game/btn_big.cs create mode 100644 Assets/ChillConnect/FGUI/package/Arrow_game/btn_big.cs.meta diff --git a/Assets/ChillConnect/FGUI/package/Arrow_game/Arrow_gameBinder.cs b/Assets/ChillConnect/FGUI/package/Arrow_game/Arrow_gameBinder.cs index 8d5a146..4de661d 100644 --- a/Assets/ChillConnect/FGUI/package/Arrow_game/Arrow_gameBinder.cs +++ b/Assets/ChillConnect/FGUI/package/Arrow_game/Arrow_gameBinder.cs @@ -14,6 +14,7 @@ namespace FGUI.Arrow_game UIObjectFactory.SetPackageItemExtension(ArrorPoint.URL, typeof(ArrorPoint)); UIObjectFactory.SetPackageItemExtension(HeartsPanel.URL, typeof(HeartsPanel)); UIObjectFactory.SetPackageItemExtension(com_finger.URL, typeof(com_finger)); + UIObjectFactory.SetPackageItemExtension(btn_big.URL, typeof(btn_big)); } } } \ No newline at end of file diff --git a/Assets/ChillConnect/FGUI/package/Arrow_game/btn_big.cs b/Assets/ChillConnect/FGUI/package/Arrow_game/btn_big.cs new file mode 100644 index 0000000..bed9772 --- /dev/null +++ b/Assets/ChillConnect/FGUI/package/Arrow_game/btn_big.cs @@ -0,0 +1,29 @@ +/** This is an automatically generated class by FairyGUI. Please do not modify it. **/ + +using FairyGUI; +using FairyGUI.Utils; + +namespace FGUI.Arrow_game +{ + public partial class btn_big : GButton + { + public Controller state; + public GImage bg; + public GTextField text; + public const string URL = "ui://sjl9teijrsd4g"; + + public static btn_big CreateInstance() + { + return (btn_big)UIPackage.CreateObject("Arrow_game", "btn_big"); + } + + public override void ConstructFromXML(XML xml) + { + base.ConstructFromXML(xml); + + state = GetControllerAt(0); + bg = (GImage)GetChildAt(0); + text = (GTextField)GetChildAt(1); + } + } +} \ No newline at end of file diff --git a/Assets/ChillConnect/FGUI/package/Arrow_game/btn_big.cs.meta b/Assets/ChillConnect/FGUI/package/Arrow_game/btn_big.cs.meta new file mode 100644 index 0000000..8a8d4b2 --- /dev/null +++ b/Assets/ChillConnect/FGUI/package/Arrow_game/btn_big.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: abd26fd11b29a084b93baa0d815ca0e4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ChillConnect/FGUI/package/Arrow_game/com_arrow_game.cs b/Assets/ChillConnect/FGUI/package/Arrow_game/com_arrow_game.cs index d9fee3c..d6c09c0 100644 --- a/Assets/ChillConnect/FGUI/package/Arrow_game/com_arrow_game.cs +++ b/Assets/ChillConnect/FGUI/package/Arrow_game/com_arrow_game.cs @@ -10,13 +10,15 @@ namespace FGUI.Arrow_game public GGraph bg; public GButton btn_menu; public GComponent view_container; - public ArrowEnd ArrowEnd; public ArrorPoint point; public GButton btn_close; public HeartsPanel HeartsPanel; public GButton btn_clear; public GButton btn_hint; public com_finger com_finger; + public btn_big btn_big; + public btn_big btn_small; + public GSlider zoomSlide; public const string URL = "ui://sjl9teijrsd40"; public static com_arrow_game CreateInstance() @@ -31,13 +33,15 @@ namespace FGUI.Arrow_game bg = (GGraph)GetChildAt(0); btn_menu = (GButton)GetChildAt(1); view_container = (GComponent)GetChildAt(2); - ArrowEnd = (ArrowEnd)GetChildAt(3); - point = (ArrorPoint)GetChildAt(4); - btn_close = (GButton)GetChildAt(6); - HeartsPanel = (HeartsPanel)GetChildAt(7); - btn_clear = (GButton)GetChildAt(9); - btn_hint = (GButton)GetChildAt(10); - com_finger = (com_finger)GetChildAt(11); + point = (ArrorPoint)GetChildAt(3); + btn_close = (GButton)GetChildAt(5); + HeartsPanel = (HeartsPanel)GetChildAt(6); + btn_clear = (GButton)GetChildAt(8); + btn_hint = (GButton)GetChildAt(9); + com_finger = (com_finger)GetChildAt(10); + btn_big = (btn_big)GetChildAt(11); + btn_small = (btn_big)GetChildAt(12); + zoomSlide = (GSlider)GetChildAt(13); } } } \ No newline at end of file diff --git a/Assets/Resources/ChillConnectAssets/FGUI/Arrow_game_atlas0.png b/Assets/Resources/ChillConnectAssets/FGUI/Arrow_game_atlas0.png index d17798f06621093302671ed64bbb0779e9952545..16802226ab15c265a189511d33d4dbfd729a0abd 100644 GIT binary patch delta 16247 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 delta 14831 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 diff --git a/Assets/Resources/ChillConnectAssets/FGUI/Arrow_game_fui.bytes b/Assets/Resources/ChillConnectAssets/FGUI/Arrow_game_fui.bytes index 1d028d0458da19a696c69275751d3e4e70588928..c0b1654af1a2f29979be5b7fbe9bd648d8fbe4e2 100644 GIT binary patch delta 1760 zcmZuxTTfh76#n*{nRDiTg((ba3e-}rC={x4w_0R6gi>K>hVfEkfJ9A9 zADWVFYT_kPU%bSakT%9AV^V#oFDCr~65mWr)bzoZhVk3y%pe%g$#>2^-}=^Gd#%0p z`K9(|`|U(o={qp5=%?mO@TpL`Gn2NT7Fi9)Pzif}Pg%E!H@pph!Vf_h#gt_nzbfKGu9wdM|#;Zqz zsZYKR>g@~tUNhm$bXzJDGmJmg~{;`H9(cOri{2q1o zGk~#0v;OvfcS2tyd!2Yw{^2bXetF3e6V>t+$Cz=J>D8lGK5$$JBshKwNp|5L@weP? zRI|`dc~OrUeYEvsK;F{_wLzSdkM&t?2<3NojAbFecdiD9894x+95W}MSz9^nsy0UG zIf@H%(=}j>aXgNT@_}p2`!qC)nUMa-68E@kyw9lWXrCV>1M-ghhOfbGVhU3(D6dHlA$Z{b&&%5&c*s@drVpHl zer9yug+_W$v*#gl^bQx->vys7*&{%j-BW3Z`x<`$y>}nGe-K&%NqOJ9sLfzjHuzFT zJLd>vPQL4#(w@U5`Md9`cwSEV=d?b&Ab0$8hB|d&);JUx*G5>eRAA22X>ykt0x}Tn zHPm+i^U@RSGsh)(QBDTO9b;HvJAM{yN~Kf-slMSk<`FKobJUJ2<_{@NTA8uMshACF z*rit#QMk-TwIqj_8g!bvVd)PYcPNix*%_)b#!U8>yd0{EH=E<13Vvn_ADYQxYS6x~ zOUj#}qjh!W_iyw|5{1K7m_@xT23V9ohjurYV5D-H`PA|f9P7D-+#+nLCD?O|ujL?` z)X#=bM|M5kehvQD*Va}iR+iI?^Gn&~>lWP!BNLxj0@yNfi+c&KeW}GpF delta 747 zcmY*XJxo(k6#kx<$9-+-d!>DC9|1#Keng~FTK*JiEfoA~tCARHsvx991H?Kws1apz zFeGPUFmW+)#m33O0f>oT<`98rJ zt=rC`@NC1kbA74F1q4#*AG)ejoah%p8kL(J?j-Z1uQ(q(nDU`{IVVUo9+W=9TlqISsV`Ei`?x(c$N z;}aO5eOKOyb9~a-2(?=64@KNLBf;DdlAJ#W#3rrlF}msw$Q1L#7@<4v88M16s=9B8 zakNz*R3$G*&N`!`^Ni@7)4%5D^G zf_?SmrAoGswylIY!s)n^Ld)6}Giyt< LYrUiwZL5C){>rcS diff --git a/Assets/Scripts/ModuleUI/ArrowGame/ArrowGameUI.cs b/Assets/Scripts/ModuleUI/ArrowGame/ArrowGameUI.cs index b611cf3..4f77b3f 100644 --- a/Assets/Scripts/ModuleUI/ArrowGame/ArrowGameUI.cs +++ b/Assets/Scripts/ModuleUI/ArrowGame/ArrowGameUI.cs @@ -1,6 +1,7 @@ using System.Collections; using System.Collections.Generic; using System.IO; +using System.Linq; using FairyGUI; using FGUI.Arrow_game; using UnityEngine; @@ -45,7 +46,6 @@ namespace ChillConnect private bool[,] _gridOccupied; // 记录每个箭头占用的所有网格点位(行,列) private Dictionary> _arrowOccupiedCells = new Dictionary>(); - // 爱心数量 private int _heartCount = 3; @@ -60,6 +60,30 @@ namespace ChillConnect // 是否开启删除道具模式 private bool _isDeleteMode = false; + // 手指提示图标 + private com_finger _fingerTipObj; + // 当前正在提示的箭头 + private ArrowConfig _currentTipArrow; + // 手指图标偏移(微调位置) + private readonly Vector2 _fingerOffset = new Vector2(-60, -60); + + + #region 缩放、拖拽、滑动条 全局变量 + // 缩放阈值(滑动条左右边界对应这两个值) + private readonly float _minScale = 0.6f; + private readonly float _maxScale = 1.5f; + // FGUI 滑动条组件 + private GSlider _zoomSlider; + // 双指缩放手势 + private float _lastTwoFingerDistance; + private bool _isTwoFingerTouch; + // 单指拖拽平移 + private Vector2 _lastTouchPos; + private bool _isDraging; + // 拖拽边界留边(防止完全移出屏幕) + private readonly float _dragBorder = 100f; + #endregion + public ArrowGameUI(ArrowGameUICtrl ctrl) : base(ctrl) { uiName = UIConst.ArrowGameUI; @@ -105,6 +129,8 @@ namespace ChillConnect // 销毁所有动态FGUI对象 ClearAllDynamicObj(); + + HideFingerTip(); // 释放模板资源 if (_dotTemplate != null) _dotTemplate.Dispose(); @@ -119,6 +145,7 @@ namespace ChillConnect // 清空网格占用数据 _gridOccupied = null; _arrowOccupiedCells.Clear(); + } protected override void OnBind() @@ -133,6 +160,67 @@ namespace ChillConnect { UpdateArrowMove(arrow); } + + // ========= 双指 = 缩放(优先级最高) ========= + if (Input.touchCount == 2) + { + _isDraging = false; + Touch t0 = Input.GetTouch(0); + Touch t1 = Input.GetTouch(1); + float currentDis = Vector2.Distance(t0.position, t1.position); + + if (!_isTwoFingerTouch) + { + _lastTwoFingerDistance = currentDis; + _isTwoFingerTouch = true; + } + else + { + float delta = currentDis - _lastTwoFingerDistance; + float curScale = _viewContainer.scaleX; + // 缩放灵敏度,按需微调 + curScale += delta * 0.001f; + curScale = Mathf.Clamp(curScale, _minScale, _maxScale); + + // 应用缩放 + _viewContainer.scaleX = curScale; + _viewContainer.scaleY = curScale; + + // 关键:双指缩放后,同步更新滑动条位置 + _zoomSlider.value = GetSliderValueByScale(curScale); + + _lastTwoFingerDistance = currentDis; + } + } + // ========= 单指 = 拖拽平移 ========= + else if (Input.touchCount == 1) + { + Touch touch = Input.GetTouch(0); + Vector2 curTouchPos = touch.position; + + if (touch.phase == TouchPhase.Began) + { + _lastTouchPos = curTouchPos; + _isDraging = true; + _isTwoFingerTouch = false; + } + else if (touch.phase == TouchPhase.Moved && _isDraging) + { + Vector2 offset = curTouchPos - _lastTouchPos; + MoveContainer(offset); + _lastTouchPos = curTouchPos; + } + else if (touch.phase == TouchPhase.Ended || touch.phase == TouchPhase.Canceled) + { + _isDraging = false; + } + } + // 无触摸,重置状态 + else + { + _isTwoFingerTouch = false; + _isDraging = false; + } } protected override void OnOpenBefore(object args) @@ -176,10 +264,31 @@ namespace ChillConnect // 关闭按钮 ui.btn_close.SetClick(() => { CtrlCloseUI(); }); ui.btn_clear.SetClick(OnClickDeleteItem); + ui.btn_hint.SetClick(OnClickHint); + _fingerTipObj = com_finger.CreateInstance(); + _viewContainer.AddChild(_fingerTipObj); + _currentTipArrow = null; + _zoomSlider = ui.zoomSlide; + // 2. 绑定滑动条拖动回调 + _zoomSlider.onChanged.Add(OnZoomSliderChange); + // 3. 容器初始缩放、位置 + _viewContainer.scaleX = 1f; + _viewContainer.scaleY = 1f; + // 滑动条初始居中(对应 1.0 缩放) + float initValue = GetSliderValueByScale(1f); + _zoomSlider.value = initValue; + // 容器初始居中 + float startX = (Screen.width - _viewContainer.width) * 0.5f; + float startY = (Screen.height - _viewContainer.height) * 0.5f; + _viewContainer.SetPosition(startX, startY,0); + // 重置手势状态 + _isTwoFingerTouch = false; + _isDraging = false; + + if (_levelConfig == null) return; - // 1. 绘制网格圆点 DrawGridDots(_levelConfig); @@ -499,6 +608,12 @@ namespace ChillConnect return; } + // 点击的是当前提示箭头,直接隐藏手指 + if (_currentTipArrow == clickArrow) + { + HideFingerTip(); + } + // ========= 删除模式:直接删除箭头,不走移动逻辑 ========= if (_isDeleteMode) { @@ -519,8 +634,9 @@ namespace ChillConnect } } + #region 道具 /// 点击删除道具,开启/关闭删除模式 - public void OnClickDeleteItem() + private void OnClickDeleteItem() { _isDeleteMode = !_isDeleteMode; @@ -535,7 +651,106 @@ namespace ChillConnect Debug.Log("已关闭删除模式"); } } + + private void OnClickHint() + { + ShowRandomArrowTip(); + } + + /// 随机选中有效箭头,显示静态手指提示(不跟随移动) + private void ShowRandomArrowTip() + { + // 先隐藏上一次提示 + HideFingerTip(); + if (_levelConfig == null || _levelConfig.arrows == null || _levelConfig.arrows.Count == 0) + { + Debug.Log("暂无可提示的箭头"); + return; + } + + // 筛选有效箭头 + List validArrows = _levelConfig.arrows + .Where(arrow => arrow != null && arrow.arrowObj != null) + .ToList(); + + if (validArrows.Count == 0) + { + Debug.Log("没有有效箭头可提示"); + return; + } + + // 随机选一个 + int randomIndex = Random.Range(0, validArrows.Count); + _currentTipArrow = validArrows[randomIndex]; + + // 设置手指位置(仅初始化一次,不再刷新) + float x = _currentTipArrow.arrowObj.x + _fingerOffset.x; + float y = _currentTipArrow.arrowObj.y + _fingerOffset.y; + _fingerTipObj.SetPosition(x, y, 0); + _fingerTipObj.visible = true; + } + + /// 隐藏手指提示并清空标记 + private void HideFingerTip() + { + if (_fingerTipObj != null) + { + _fingerTipObj.visible = false; + } + _currentTipArrow = null; + } + #endregion + + + #region 缩放 + + /// 根据缩放值,计算滑动条 value(0~1) + private float GetSliderValueByScale(float scale) + { + float t = (scale - _minScale) / (_maxScale - _minScale); + return Mathf.Clamp01(t); + } + + /// 根据滑动条 value(0~1),计算实际缩放值 + private float GetScaleBySliderValue(float sliderValue) + { + float scale = _minScale + sliderValue * (_maxScale - _minScale); + return Mathf.Clamp(scale, _minScale, _maxScale); + } + + /// 滑动条数值变化回调 + private void OnZoomSliderChange() + { + float scale = GetScaleBySliderValue((float)_zoomSlider.value); + _viewContainer.scaleX = scale; + _viewContainer.scaleY = scale; + } + + /// 移动容器 + 边界限制,防止完全拖出屏幕 + private void MoveContainer(Vector2 offset) + { + float newX = _viewContainer.x + offset.x; + float newY = _viewContainer.y + offset.y; + + float viewW = _viewContainer.width * _viewContainer.scaleX; + float viewH = _viewContainer.height * _viewContainer.scaleY; + + // 左右边界 + float minX = -viewW + _dragBorder; + float maxX = Screen.width - _dragBorder; + newX = Mathf.Clamp(newX, minX, maxX); + + // 上下边界 + float minY = -viewH + _dragBorder; + float maxY = Screen.height - _dragBorder; + newY = Mathf.Clamp(newY, minY, maxY); + + _viewContainer.SetPosition(newX, newY,0); + } + + #endregion + // 基于网格行列的阻挡检测 private bool CheckBlockByGrid(ArrowConfig curArrow) { @@ -637,7 +852,13 @@ namespace ChillConnect private void DeleteArrowCompletely(ArrowConfig arrow) { if (arrow == null) return; - + + // 被删除的是提示箭头,隐藏手指 + if (_currentTipArrow == arrow) + { + HideFingerTip(); + } + // 1. 停止移动标记,拦截Update和协程 arrow.isMoving = false; @@ -1105,6 +1326,19 @@ namespace ChillConnect return; } + // 1. 恢复默认缩放 1倍 + _viewContainer.scaleX = 1f; + _viewContainer.scaleY = 1f; + // 2. 滑动条回归对应位置 + _zoomSlider.value = GetSliderValueByScale(1f); + // 3. 容器屏幕居中 + float startX = (Screen.width - _viewContainer.width) * 0.5f; + float startY = (Screen.height - _viewContainer.height) * 0.5f; + _viewContainer.SetPosition(startX, startY,0); + // 4. 清空手势状态 + _isTwoFingerTouch = false; + _isDraging = false; + // 先清空当前所有动态物体 ClearAllDynamicObj(); // 重新走初始化流程