मैं वर्तमान में एक ही समस्या का सामना कर रहा हूं, और मेरा समाधान बिल्कुल वही है जो डकमेस्ट्रो और रेवेन ड्रीमर ने सुझाया है - एक स्क्रिप्ट है जो रनटाइम पर 4 चाइल्ड ऑब्जेक्ट बनाती है, जिनमें से प्रत्येक सीमा के किनारे का प्रतिनिधित्व करता है और प्रत्येक को लाइन रेंडरर्स संलग्न करता है।
मेरे मामले में मुझे अपनी वस्तु के चारों ओर रखने के लिए सीमा का लगातार आकार बदलने की आवश्यकता थी (एक पाठ जाल [जो एक कस्टम पाठ क्षेत्र के लिए एक मेष रेंडरर का उपयोग करता है)) इसलिए हर अद्यतन मैंने ऐसा किया:
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 अक्षों में घुमा सकता हूं (यहां तक कि इसे घुमाएं, और चूंकि लाइन रेंडरर्स हमेशा कैमरे का सामना करते हैं, यह अजीब नहीं दिखता है), और है लागू करने के लिए मुश्किल नहीं है।