Jump to content

ObjectGui: WidgetButton не реагирует на нажатие мыши C#


photo

Recommended Posts

Posted (edited)

Помогите разобраться с ГУИ.

Добавил в мир ObjectGui

image.thumb.png.c34efbe58e00a0b8752837a8a8908607.png

В коде создаю кнопку и функцию нажатия к ней:

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");
	}

}

Кнопка создается и отображается как положено, но при попытке нажать на неё ничего не происходит, функция нажатия не вызывается, курсор просто исчезает.

image.png.4ac3271a5377e67a167d06e5d99f68a3.png

 

Edited by sevas55
Posted

Спасибо за разъяснение! В тестовом проекте все заработало.

Но проблема пока решена частично и, возможно, я нашел то ли баг, то ли нужно для gui тип переменной Control Distance сменить с float на double для проектов double.

В моем рабочем проекте (double) большие расстояния, > 20 км. Район где должен работать симулятор от начала мировой системы координат >20 км.

Если выставить в GUI Control Distance = 100 км, то он начинает как то реагировать  и захватывать мышь. Но курсор мыши резко меняет положение и попасть в кнопку не получается, как будто появляется ошибка округления для float.

Такое ощущение, что Control Distance отсчитывается почему-то не от текущей камеры, а от начала мировой системы координат. 

Прикрепляю свой очищенный рабочий проект (755 Мб), где проблема воспроизводится 100% В проекте находится водный мотоцикл на котором gui эхолота дочерний к нему. 

Как можно решить проблему?

Вариант перенести область симуляции ближе к началу координат понятен, но хотелось бы чтобы gui работал везде в мире. И тогда нелогичен параметр Control Distance, если он не привязан к текущей камере.

 

 

×
×
  • Create New...