Şu anda aynı sorunla karşı karşıyayım ve çözümüm tam olarak DuckMaestro ve Raven Dreamer'ın önerdiği şey - Çalışma zamanında her birinin sınırın bir tarafını temsil eden ve her birine satır oluşturucuları ekleyen 4 alt nesne oluşturan bir komut dosyası var.
Benim durumumda, nesneyi (özel bir metin alanı için [kafes oluşturucu kullanan] bir metin ağı) tutmak için kenarlığı sürekli olarak yeniden boyutlandırmam gerekiyordu, böylece her güncelleme bunu yaptım:
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()
sadece uygun satır oluşturucuya erişir (ilk parametre ile belirtilir) ve sırasıyla başlangıç ve bitişini birinci ve ikinci vektöre ayarlar.
renderer
Boyut için referans olarak kullandığımı unutmayın , ancak x, y sol üst köşe olduğu sürece herhangi bir dikdörtgen kullanabilirsiniz.
Bunun gerçekten iyi çalıştığını söyleyebileceğimden, oyunda harika görünüyor çünkü sınırlanmış nesneyi 3 eksenin hepsinde kolayca hareket ettirebiliyorum (hatta döndürün ve çizgi oluşturucular her zaman kameraya baktığı için garip görünmüyor) ve uygulamak zor değil.