В едином интерфейсе код для нажатия кнопки заключен в оператор if
для кнопки.
if(GUILayout.Button("Button Text"))
{
// code for click event goes here
}
этот код вызывается только для кадра, в котором нажата кнопка, поэтому в приведенном выше примере отображаются только сведения об агенте, которого вы щелкнули в течение 1 кадра.
вам нужно изменить его на что-то вроде
if (GUILayout.Button(agent.shortName))
{
agent.selected = true;
}
if(agent.selected)
{
Debug.Log("clicked" + agent.shortName);
GUILayout.BeginHorizontal();
GUILayout.BeginVertical();
GUILayout.Label("Health: "+agent.Health +"/"+agent.MaximumHealth);
GUILayout.EndVertical();
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
GUILayout.BeginVertical();
GUILayout.Label("Thoughts: nothing");
GUILayout.EndVertical();
GUILayout.EndHorizontal();
/*if (agent.hasFlag)
{ //TODO: Add this function to agent
GUILayout.BeginVertical();
GUILayout.Label("Has the flag");
GUILayout.EndVertical();
}*/
}
если вы хотите показывать информацию только при удерживаемой кнопке, вы можете изменить GUILayout.Button
на GUILayout.RepeatButton
в вашем исходном коде.