Actualmente estoy enfrentando el mismo problema, y mi solución es exactamente lo que sugirieron DuckMaestro y Raven Dreamer: tener un script que cree 4 objetos secundarios en tiempo de ejecución, cada uno de los cuales representa un lado del borde y adjuntar renderizadores de línea a cada uno.
En mi caso, necesitaba cambiar constantemente el tamaño del borde para mantenerlo alrededor de mi objeto (una malla de texto [que usa un renderizador de malla] para un campo de texto personalizado), así que cada actualización que hice esto:
float width = Mathf.Max(renderer.bounds.size.x + paddingX * 2, minWidth);
float x = renderer.bounds.center.x - width / 2;
float height = renderer.bounds.size.y + paddingY * 2;
float y = renderer.bounds.center.y - height / 2;
AlterBorder(0, new Vector3(x - thickness / 2, y, 0), new Vector3(x + width + thickness / 2, y, 0)); //Bottom edge going left to right
AlterBorder(1, new Vector3(x + width, y + thickness / 2, 0), new Vector3(x + width, y + height - thickness / 2, 0)); //Right edge going bottom to top
AlterBorder(2, new Vector3(x + width + thickness / 2, y + height, 0), new Vector3(x - thickness / 2, y + height, 0)); //Top edge going right to left
AlterBorder(3, new Vector3(x, y + height - thickness / 2, 0), new Vector3(x, y + thickness / 2, 0)); //Left edge going top to bottom
AlterBorder()
simplemente accede al renderizador de línea apropiado (especificado por el primer parámetro) y establece su inicio y fin en el primer y segundo vector respectivamente.
Tenga en cuenta que utilicé renderer
como referencia para el tamaño, pero obviamente puede usar cualquier rectángulo, siempre que x, y sea la esquina superior izquierda.
Por lo que puedo decir, esto funciona muy bien, se ve muy bien en el juego porque puedo mover fácilmente mi objeto bordeado en los 3 ejes (incluso rotarlo, y dado que los renderizadores de línea siempre miran hacia la cámara, no se ve raro), y es No es difícil de implementar.