Files
2025-08-13 09:26:42 +08:00

54 lines
1.6 KiB
C#

using System.Collections.Generic;
using BehaviorDesigner.Runtime.Tasks;
using UnityEngine;
namespace BehaviorDesigner.Runtime
{
[AddComponentMenu("Behavior Designer/Behavior Game GUI")]
public class BehaviorGameGUI : MonoBehaviour
{
private BehaviorManager behaviorManager;
private Camera mainCamera;
public void Start()
{
mainCamera = Camera.main;
}
public void OnGUI()
{
if (behaviorManager == null)
{
behaviorManager = BehaviorManager.instance;
}
if (behaviorManager == null || mainCamera == null)
{
return;
}
List<BehaviorManager.BehaviorTree> behaviorTrees = behaviorManager.BehaviorTrees;
for (int i = 0; i < behaviorTrees.Count; i++)
{
BehaviorManager.BehaviorTree behaviorTree = behaviorTrees[i];
string text = string.Empty;
for (int j = 0; j < behaviorTree.activeStack.Count; j++)
{
Task task = behaviorTree.taskList[behaviorTree.activeStack[j].Peek()];
if (task is Action)
{
text = text + behaviorTree.taskList[behaviorTree.activeStack[j].Peek()].FriendlyName + ((j >= behaviorTree.activeStack.Count - 1) ? string.Empty : "\n");
}
}
Transform transform = behaviorTree.behavior.transform;
Vector3 vector = Camera.main.WorldToScreenPoint(transform.position);
Vector2 vector2 = GUIUtility.ScreenToGUIPoint(vector);
GUIContent content = new GUIContent(text);
Vector2 vector3 = GUI.skin.label.CalcSize(content);
vector3.x += 14f;
vector3.y += 5f;
GUI.Box(new Rect(vector2.x - vector3.x / 2f, vector2.y + vector3.y / 2f, vector3.x, vector3.y), content);
}
}
}
}