テクノモンキーのアプリ開発日記

テクノモンキーの開発ブログです。iOS、Android、Unity、Cocos2d-xなどアプリ開発関連のTipsやアプリ開発に役立つ情報を発信します。

【Unity】テキストにURLリンクを実装する方法

https://unity3d.com/files/images/ogimg.jpg?1


Unityアプリ開発の仕事で「テキスト内のURLをタップしたらブラウザ起動する」っていう要件がありました。

Unityの既存のuGUIの「Text」ではURLリンクに対応してなかったので、多少手を加える必要があるようです。

今回は「UnityでテキストにURLリンクを実装する方法」について今後の為にメモとして残しておこうと思います。


【Unity】テキストにURLリンクを実装する方法


自前でやろうと思ったのですが、多少時間がかかりそうでした。
下記の方の作った「uGUI-Hypertext」を使ってみたら、かなり簡単にURLリンクが実装できたので、紹介しておきたいと思います。

setchi.hatenablog.com

github.com


使い方は上記で紹介されていますが、一応、僕の方で組み込んだ手順も書いておきます。


1.GitHubからソースコードをダウンロード・解凍

【Unity】テキストにURLリンクを実装する方法

2.Unityプロジェクトにソースコードをドラックアンドドロップ


【Unity】テキストにURLリンクを実装する方法


以下のソースコードをUnityプロジェクトに組み込みます。
・HypertextBase.cs
・ObjectPool.cs
・RegexHypertext.cs

3.Textを表示するGameObjectにAddComponentする


そして「RegexHypertext」をTextを表示したいGameObjectにAddComponentします。


【Unity】テキストにURLリンクを実装する方法

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」を使ってみてください。