uGUIのオブジェクト同士を線で繋ぐ

環境

Unity 2021.3.13f1

準備

Unity-UI-Extensions をプロジェクトにインポートします。

『Code』をクリックし、gitのURLをコピーしてください。

・Package Managerを開く

・『Add package from git URL…』をクリックする

・先ほどコピーしたgitのURLを貼り付け、インポートします

次は実装です。

・usingで使う準備

新規C#スクリプトを作成し、usingを追加

using UnityEngine.UI.Extensions;

・変数を用意

『_rectPosition1』『_rectPosition2』には繋ぎたいオブジェクトをアタッチしてください

public RectTransform _rectPosition1;
public RectTransform _rectPosition2;
private RectTransform _rectTransform;
private UILineRenderer _uiLineRenderer;
private UILineConnector _uiLineConnector;

・『Start』に追加

private void Start()
{
    _rectTransform = GetComponent<RectTransform>();
    _uiLineRenderer = GetComponent<UILineRenderer>();
    _uiLineConnector = GetComponent<UILineConnector>();
}

・『Update』に追加

画面の中心にいないとちゃんと動かないので、

画面の中央に配置する処理も追加しています。

void Update()
{
    if (_rectPosition1 == null || _rectPosition2 == null) return;

    _uiLineConnector.transforms[0] = _rectPosition1;
    _uiLineConnector.transforms[1] = _rectPosition2;

    _rectTransform.position = new Vector2(Screen.width / 2, Screen.height / 2);
}

Inspetorから2つ追加

・UILineRenderの『Points』を2つにします

・UILineConnectorの『Transforms』を2つにします

・スクリプトをオブジェクトにアタッチして再生

設定したUIオブジェクト同士を繋いだ線が表示されます。

あと注意点なのですが、

UILineConnectorはCanvas直下に置くことを前提としたコードになっていました。

どうしても子要素に入れたい場合は、

自分で書き換える必要がありそうです。

線の太さは

UILineRenderer->Line Thickness

から変更できます。

参考元

https://heppokoprogramer.seesaa.net/article/480553475.html