Unityアプリ開発の仕事で「テキスト内のURLをタップしたらブラウザ起動する」っていう要件がありました。
Unityの既存のuGUIの「Text」ではURLリンクに対応してなかったので、多少手を加える必要があるようです。
今回は「UnityでテキストにURLリンクを実装する方法」について今後の為にメモとして残しておこうと思います。
【Unity】テキストにURLリンクを実装する方法
自前でやろうと思ったのですが、多少時間がかかりそうでした。
下記の方の作った「uGUI-Hypertext」を使ってみたら、かなり簡単にURLリンクが実装できたので、紹介しておきたいと思います。
使い方は上記で紹介されていますが、一応、僕の方で組み込んだ手順も書いておきます。
2.Unityプロジェクトにソースコードをドラックアンドドロップ
以下のソースコードをUnityプロジェクトに組み込みます。
・HypertextBase.cs
・ObjectPool.cs
・RegexHypertext.cs
3.Textを表示するGameObjectにAddComponentする
そして「RegexHypertext」をTextを表示したいGameObjectにAddComponentします。
3.スクリプトでURLリンク部分の指定を行う
using System.Collections; using Hypertext; using UnityEngine; using UnityEngine.UI; public class MenuManager : MonoBehaviour { const string RegexURL = "http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?"; void Start() { ShowMessage(); } public void ShowMessage() { MessageText.GetComponent<RegexHypertext>().text = "テキスト\n URL:https://abc/d.html"; MessageText.GetComponent<RegexHypertext>().OnClick(RegexURL,new Color32(156,203,194,255), url => OpenBrowser(url)); } public void OpenBrowser(string url) { Application.OpenURL(url); } }
実装は以上です。
上記の実装でText内のURLをタップするとブラウザを起動する動きを簡単に実現できました。
URLかどうかの判断は正規表現で判定しているようです。
URLリンクの色指定もできるのがいいですね。
もし、Unityでテキスト内のURLリンクが実現できない人は是非「uGUI-Hypertext」を使ってみてください。