sevas55 Posted yesterday at 05:24 PM Posted yesterday at 05:24 PM (edited) Помогите разобраться с ГУИ. Добавил в мир ObjectGui В коде создаю кнопку и функцию нажатия к ней: using System.Collections; using System.Collections.Generic; using Unigine; [Component(PropertyGuid = "e43a1cf25fa271dca1f387fe5604fdeab4d5ec2c")] public class MyGuiTest : Component { Gui gui; WidgetButton widget_buttonSonarMode; void Init() { gui = (node as ObjectGui).GetGui(); widget_buttonSonarMode = new WidgetButton(gui, "Sonar Mode"); widget_buttonSonarMode.Arrange(); widget_buttonSonarMode.SetPosition(10,100); widget_buttonSonarMode.FontSize = 50; widget_buttonSonarMode.ButtonColor = vec4.BLUE; // устанавливаем лямбда-функцию для обработки события CLICKED (щелчок мыши) widget_buttonSonarMode.EventClicked.Connect(BtnSonarMode); widget_buttonSonarMode.Enabled = true; gui.AddChild(widget_buttonSonarMode, Gui.ALIGN_OVERLAP); // Input.MouseGrab = true; } void BtnSonarMode(Widget sender) { Log.MessageLine("BTN SONAR"); } } Кнопка создается и отображается как положено, но при попытке нажать на неё ничего не происходит, функция нажатия не вызывается, курсор просто исчезает. Edited yesterday at 05:35 PM by sevas55
bmyagkov Posted 15 hours ago Posted 15 hours ago Добрый день! Попробуйте также использовать метод setControlDistance https://developer.unigine.com/en/docs/2.19.1/api/library/objects/class.objectgui?rlang=cpp&autotranslate=en#setControlDistance_float_void Наиболее вероятно, что это может решить вашу проблему: obj_gui_distance.mp4 Спасибо!
sevas55 Posted 2 hours ago Author Posted 2 hours ago Спасибо за разъяснение! В тестовом проекте все заработало. Но проблема пока решена частично и, возможно, я нашел то ли баг, то ли нужно для gui тип переменной Control Distance сменить с float на double для проектов double. В моем рабочем проекте (double) большие расстояния, > 20 км. Район где должен работать симулятор от начала мировой системы координат >20 км. Если выставить в GUI Control Distance = 100 км, то он начинает как то реагировать и захватывать мышь. Но курсор мыши резко меняет положение и попасть в кнопку не получается, как будто появляется ошибка округления для float. Такое ощущение, что Control Distance отсчитывается почему-то не от текущей камеры, а от начала мировой системы координат. Прикрепляю свой очищенный рабочий проект (755 Мб), где проблема воспроизводится 100% В проекте находится водный мотоцикл на котором gui эхолота дочерний к нему. Как можно решить проблему? Вариант перенести область симуляции ближе к началу координат понятен, но хотелось бы чтобы gui работал везде в мире. И тогда нелогичен параметр Control Distance, если он не привязан к текущей камере.
Recommended Posts