Loading... # 学院构想家——Unity获取游戏UI控件 上一次我获取了学院构想家的金钱地址,通过CheatEngine的自动扫描指针功能利用排除法得到了基地址,因为一开始软件默认的层数无法获取到稳定的基地址偏移,设置到8层才获得到稳定的结果,所以很多时候可能需要设置多点扫描偏移层数才可以 ## 前置准备 我们需要准备两个项目文件 bepinex根据电脑系统情况下载对应版本就行 [UnityExplorer](https://github.com/sinai-dev/UnityExplorer ) [bepinex](https://github.com/bepinex/bepinex) UnityExplorer就需要查看游戏的实际情况 如果你的游戏目录有: 游戏名_Data/Managed/(里面有一堆 .dll 文件) 下载: UnityExplorer.BepInEx5.Mono.zip 原因: 这是最常见的传统 Unity 游戏架构,开发和 Hook 起来最简单。 如果你的游戏目录有: 游戏名_Data/il2cpp_data/(里面没有 dll,根目录可能有 GameAssembly.dll) 下载: UnityExplorer.BepInEx5.IL2CPP.zip 原因: 现代大型手游或高性能 PC 游戏常用这种架构。如果你选错了,进游戏后按 F2 是没反应的。 打开游戏目录,可以点击Steam仓库,按照以下方式打开游戏目录文件  然后把bepinex解压到指定目录  UnityExplorer则是Bepinex的插件 拖进Bepinex的插件目录Plugins  ## 启动游戏确认生效  打开配置文件将console.log设置为true,最后打开游戏生效  点击UnityExplorer上方的Inspector,点击Mouse Inspect,然后点击UI 例如点击建造按钮,就可以显示它的UI情况,因为建造按钮是开发者自定义的Object对象,不属于按钮,所以Hook时候非按钮对象触发  通过Components列表可以看到没有Unity标准的UnityEngine.UI.Button控件组件,所以得用通用事件去触发开发者的自己写的按钮 ```c# // 1. 锁定目标物体 string targetName = "建造入口"; UnityEngine.GameObject targetObj = UnityEngine.GameObject.Find(targetName); if (targetObj != null) { UnityEngine.Debug.Log("<color=cyan>[AI 发现] 已锁定自定义按钮物体: " + targetObj.name + "</color>"); // 2. 构造一个虚拟的鼠标点击事件 var pointerData = new UnityEngine.EventSystems.PointerEventData(UnityEngine.EventSystems.EventSystem.current); pointerData.button = UnityEngine.EventSystems.PointerEventData.InputButton.Left; // 模拟左键 // 3. 核心:强制触发指针点击事件 // 这种方法不依赖于 Button 组件,只要物体上有任何继承了 IPointerClickHandler 的脚本都能生效 UnityEngine.EventSystems.ExecuteEvents.Execute(targetObj, pointerData, UnityEngine.EventSystems.ExecuteEvents.pointerClickHandler); // 4. 备选方案:触发 PointerDown 和 PointerUp(有些自定义按钮监听这两个) UnityEngine.EventSystems.ExecuteEvents.Execute(targetObj, pointerData, UnityEngine.EventSystems.ExecuteEvents.pointerDownHandler); UnityEngine.EventSystems.ExecuteEvents.Execute(targetObj, pointerData, UnityEngine.EventSystems.ExecuteEvents.pointerUpHandler); UnityEngine.Debug.Log("<color=green>[AI 行动] 已向该物体发送全套点击信号,请查看游戏内反应!</color>"); } else { UnityEngine.Debug.Log("<color=yellow>[AI 错误] 找不到物体: " + targetName + "</color>"); } ``` 实际备选方案可以不用,强制触发就够了 最后修改:2026 年 04 月 24 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏