🌥もこも制作日記🌥

創作に関することを書いていきます。だいたいゲーム系

【Unity2017.1.x】PC, Mac & Linux Standalone Twitterシェア機能を作る

初めに

自作ゲームをプレイしてもらうためにはまず人に認知してもらう必要があり、そのためにはシェア機能が大事だと感じたので Unityにおけるシェア機能の作り方を書く、その際につま付いた点もメモっておく。

以下の流れで書いて行きます

  • コード
  • ざっくりとした流れ
  • つまづきポイント

作り方

シェア機能は各プラットフォームごとに実装の仕方が違う。 今回は「PC, Mac & Linux Standalone」対応のシェア機能作成方法を書き留めます。

コード

実際にUnity1weekで使用したコードを抜粋して掲載します。 大事なのは Application.OpenURLの箇所なのでその部分コピれば直ぐに実装できます。

    public void Share()
    {
// 投稿する内容の構築
     string workURL = "https://sim-mokomo-shop.booth.pm";
        StringBuilder builder = new StringBuilder();
        builder.AppendLine($"ここから遊べるよ→{workURL}");
        builder.AppendLine("#VoiceRock #unity1week");
        string text = builder.ToString();        

// 指定のURLを使い投稿
        Application.OpenURL( "http://twitter.com/intent/tweet?text=" + WWW.EscapeURL( $"{text}" ) );
    }

流れ

  1. 投稿する際の文字列を作る。

  2. Application.OpenURLを用いてTwitter投稿画面を開く。

  3. この際にtextパラメータにはあらかじめ決めておいた投稿の内容を渡しておく。

つまづきポイント

使用する関数に気をつける

指定のサイトを開く方法としていくつかネット上に方法が掲載されている。

  1. Application.ExternalEval
  2. Application.OpenURL

1.は Unity5.4.0以降はサポートしていない と書かれているので2.を使用する。

docs.unity3d.com

投稿文字列に気をつける

textパラメータに投稿されたい内容の文字列を埋め込む時にエスケープ処理を挟む必要がある。これは特定の文字について、例えば & < > 等がこれに該当する。

これらの文字を使っている文字列をそのままOpenURLに渡した場合サイトを開くことができなくなってしまう(何も起きない)

なので WWW.EscapeURLを用いてURLとして成立する事を保証する必要がある。

docs.unity3d.com

結果

適当なボタンに上記の関数を登録してボタンを押した時に実行させる事で Twitter投稿画面がひらけます💪 f:id:sim-mokomo:20180911162939p:plain