using UnityEngine;
public class Draws : MonoBehaviour
{
public LineRenderer lineRenderer;
public string text;
private Vector3[] positions;
private string oldText;
private void Start()
{
if (lineRenderer == null)
{
lineRenderer = GetComponent<LineRenderer>();
lineRenderer.startWidth = 0.3f;
lineRenderer.endWidth = 0.3f;
}
// 0, 0, 0
// 5, 0, 0
// 5, -5, 0
// 0, -5, 0
positions = new Vector3[5] { new Vector3(0, 0, 0), new Vector3(5, 0, 0),
new Vector3(5, -5, 0), new Vector3(0, -5, 0), new Vector3(0, 0, 0)};
DrawLine(positions, Color.red, 0.2f);
}
void DrawLine(Vector3[] positions, Color color, float duration = 0.2f)
{
GameObject myLine = new GameObject();
myLine.transform.position = positions[0];
myLine.AddComponent<LineRenderer>();
LineRenderer lr = myLine.GetComponent<LineRenderer>();
lr.positionCount = positions.Length;
lr.startColor = color;
lr.endColor = color;
lr.startWidth = 0.1f;
lr.endWidth = 0.1f;
lr.useWorldSpace = false;
lr.SetPositions(positions);
}
void DrawText()
{
for (int i = 0; i < positions.Length; i++)
{
if (oldText != text)
{
var pos = Camera.main.WorldToScreenPoint(positions[i]);
text = positions[i].ToString();
var textSize = GUI.skin.label.CalcSize(new GUIContent(text));
GUI.contentColor = Color.red;
GUI.Label(new Rect(pos.x, Screen.height - pos.y, textSize.x, textSize.y), text);
GUI.contentColor = Color.green;
GUI.Label(new Rect(pos.x, Screen.height - pos.y - 20, textSize.x, textSize.y), i.ToString());
}
}
}
private void OnGUI()
{
if (positions != null)
{
if (positions.Length > 0)
{
DrawText();
}
}
}
}
В методе DrawText я использую метку gui для отображения строки на каждых двух строках, совпадающих с положением угла. Например, при 0,0,0
В конце, когда квадрат закрыт, первая позиция и последняя - 0,0,0, поэтому я хочу избежать отображения одного и того же текста позиции красным и зеленым.
Я добавил еще одну текстовую переменную, назвав ее oldText, но не знаю, как ее использовать больше. Сейчас я проверяю, если oldText! = Text, но поскольку oldText все время пуст, он всегда будет верным.
Пример снимка экрана:
Квадрат с текстами красного и зеленого цветов