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
から変更できます。
参考元
ディスカッション
コメント一覧
まだ、コメントがありません