私は現在同じ問題に直面していますが、私のソリューションはまさにDuckMaestroとRaven Dreamerが提案したものです-実行時に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()
適切なラインレンダラー(最初のパラメーターで指定)にアクセスし、その開始と終了をそれぞれ最初と2番目のベクトルに設定します。
renderer
サイズの参照として使用したことに注意してください。ただし、x、yが左上隅であれば、任意の長方形を使用できます。
これが本当にうまくいくと言うことから、3軸すべてで境界線オブジェクトを簡単に動かすことができるので(ゲームを回転させても、ラインレンダラーは常にカメラに面しているので変に見えません)、実装するのは難しくありません。