ขณะนี้ฉันกำลังเผชิญปัญหาเดียวกันและวิธีแก้ปัญหาของฉันคือสิ่งที่ DuckMaestro และ Raven Dreamer แนะนำ - มีสคริปต์ที่สร้างวัตถุลูก 4 ตัวที่รันไทม์ซึ่งแต่ละอันแทนด้านข้างของเส้นขอบและแนบ renderers บรรทัดกับแต่ละคน
ในกรณีของฉันฉันจำเป็นต้องปรับขนาดเส้นขอบอย่างต่อเนื่องเพื่อให้มันอยู่รอบวัตถุของฉัน (A text mesh [ซึ่งใช้ mesh renderer] สำหรับฟิลด์ข้อความที่กำหนดเอง) ดังนั้นทุกครั้งที่ฉันทำสิ่งนี้:
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()
เพียงเข้าถึงตัวแสดงผลบรรทัดที่เหมาะสม (ระบุโดยพารามิเตอร์แรก) และตั้งค่าเริ่มต้นและสิ้นสุดเป็นเวกเตอร์ตัวแรกและตัวที่สองตามลำดับ
โปรดทราบว่าฉันใช้renderer
เป็นข้อมูลอ้างอิงสำหรับขนาด แต่เห็นได้ชัดว่าคุณสามารถใช้รูปสี่เหลี่ยมผืนผ้าใด ๆ ได้ตราบใดที่ x, y เป็นมุมบนซ้าย
จากสิ่งที่ฉันบอกได้ว่ามันใช้งานได้ดีจริง ๆ ดูดีในเกมเพราะฉันสามารถเคลื่อนย้ายวัตถุที่มีขอบล้อมรอบในทั้ง 3 แกนได้อย่างง่ายดาย (แม้จะหมุนมันและเนื่องจากตัวแสดงเส้นจะเผชิญหน้ากับกล้อง ไม่ยากที่จะใช้