fairygui / FairyGUI-unity

A flexible UI framework for Unity
https://fairygui.com
MIT License
2.68k stars 636 forks source link

如何阻止事件传递到原游戏内 #197

Closed liesauer closed 1 year ago

liesauer commented 1 year ago

你好,我使用FairyGUI以插件的形式给游戏开发Mod,并使用以下方式加载Mod UI

var view = package.CreateObject("Main").asCom;
GRoot.inst.AddChild(view);

如何能使在Mod UI响应的事件不再继续传递到游戏内呢(既Mod UI的遮挡效果),我尝试以下方法但似乎不可行

view.AddEventListener("onClick", (context) => {
    context.PreventDefault();
});
xiaoguzhu commented 1 year ago

view在编辑器里如果没有设置为穿透,本来就不会透过任何消息的。

liesauer commented 1 year ago

这应该得看原游戏的控制,我是开发Mod的,原游戏代码我自身没法控制,实际上我遇到的情况是因为FairyGUI和游戏自身的完全是两套独立的控制系统,它们两者根本就没法做到事件的交互干涉,目前的解决方法就是在弹出Mod界面时,利用harmony以及反射技术将游戏内用到的所有控制都disable掉,InControl mouseBlocker 甚至有的地方还直接用了Input.GetKeyDown,关闭Mod界面时再重新enable。