ラベル Tweet の投稿を表示しています。 すべての投稿を表示
ラベル Tweet の投稿を表示しています。 すべての投稿を表示

2014年6月2日月曜日

【Unity】UnityRoom専用のTweetクラスを作りました。

この記事は古いです。

あたらしい情報はこちら


UnityRoomというUnityWebPlayer向けのゲームを公開できるサイトを運用しています。
→UnityRoom (http://unityroom.com/)

上記サイトでの利用を前提としたTwitter利用クラスを作りましたので
ゲームからスコアをつぶやかせるときなどにご利用ください。

注意

・UnityWebPlayer専用です。
・UnityRoomでの利用を前提とした作りです。

サンプル

「うに部屋Tweetサンプル」http://unityroom.com/game/000036
このようなことが簡単にできます。

ソースコード

・新規C#スクリプトを追加
  名前は"UnityRoomTweet"としてください。
・このスクリプトの内容を以下の通りにしてください。
using UnityEngine;

public static class UnityRoomTweet
{  
  const string SHAREURL = "http://twitter.com/share?";
 
 
  /// <summary>
  ///  ツイートします。
  /// </summary>
  /// <param name="text">本文</param>
  public static void Tweet (string text)
  {
    Tweet (text, -1);
  }
  /// <summary>
  /// ツイートします。
  /// </summary>
  /// <param name="text">本文</param>
  /// <param name="gameId">UnityRoomゲームID</param>
  public static void Tweet (string text, int gameId)
  {
    Tweet (text, gameId, null, null);
  }
 
  /// <summary>
  /// ツイートします。
  /// </summary>
  /// <param name="text">本文</param>
  /// <param name="gameId">UnityRoomゲームID</param>
  /// <param name="via">発言者(@を除いたTwitterIDを指定)</param>
  /// <param name="hashtag">ハッシュタグ(#は不要)</param>
  public static void Tweet (string text, int gameId, string via, string hashtag)
  {
    if (Application.platform == RuntimePlatform.WindowsWebPlayer 
      || Application.platform == RuntimePlatform.OSXWebPlayer) {
   
      string url = gameId != -1 ? string.Format ("http://unityroom.com/game/{0:000000}", gameId) : "";
   
      var sb = new System.Text.StringBuilder ();
      sb.Append (SHAREURL);
      sb.Append ("original_referer=");
      sb.Append ("&text=" + WWW.EscapeURL (text));
      if (!string.IsNullOrEmpty (url)) 
        sb.Append ("&url=" + WWW.EscapeURL (url));
      if (!string.IsNullOrEmpty (hashtag))
        sb.Append ("&hashtags=" + WWW.EscapeURL (hashtag));
      if (!string.IsNullOrEmpty (via))
        sb.Append ("&via=" + WWW.EscapeURL (via));
   
      Application.ExternalEval ("var F = 0;if (screen.height > 500) {F = Math.round((screen.height / 2) - (250));}window.open('" + sb.ToString () + "','intent','left='+Math.round((screen.width/2)-(250))+',top='+F+',width=500,height=260,personalbar=no,toolbar=no,resizable=no,scrollbars=yes');");
    } else {
      Debug.Log ("WebPlayer以外では実行できません。");
    }
  }
}

使い方の概要


Tweet関数には3つのオーバーロードがあります。

Tweet(string text)

本文のみのツイートを行います。

Tweet(string text, int gameId)

本文とともにゲームのURLをツイートします。
gameIdはUnityRoomゲーム画面のURL末尾にある数字です。
※2014/06/02 すみませんが現時点では一度公開いただかないと確認できません。

Tweet(string text, int gameId, string via, string hashtag )

本文、URL、投稿者、ハッシュタグを記載したTweetをします。
投稿者(via)
 @naichilabさんより といった部分です。
 @を除いたTwitterIDを指定してください。
ハッシュタグ(hashtag)
 #Unity1Week といった部分です。
 #を除いた文字列を指定してください。
 カンマ( , )で区切る事で複数のハッシュタグを指定できます。

viaとhashtagはnullもしくは空文字("")を指定すると付与されません。

呼び出しサンプル


ここではサンプルとしてOnGUIのButtonが押されたときにTweetするようにしてみます。

・新規C#スクリプトを追加
 名前は"CallTweet"とします。
・CallTweetスクリプトの内容を以下の様に記述します。
using UnityEngine;

public class CallTweet : MonoBehaviour
{
 
  void OnGUI ()
  {
    if (GUI.Button (new Rect (10, 20, 400, 90), "Tweet1(本文のみ)")) {
      UnityRoomTweet.Tweet ("本文のみのテストツイートです");
    }
    if (GUI.Button (new Rect (10, 120, 400, 90), "Tweet2(本文+URL)")) {
      UnityRoomTweet.Tweet ("本本文とURLのテストツイートです。", 36);
    }
    if (GUI.Button (new Rect (10, 220, 400, 90), "Tweet3(本文+URL+ハッシュタグ)")) {
      UnityRoomTweet.Tweet ("ハッシュタグ付きのツイートです。", 36, null, "Unity1Week");
    }
    if (GUI.Button (new Rect (10, 320, 400, 90), "Tweet4(本文+URL+ユーザー)")) {
      UnityRoomTweet.Tweet ("投稿者ID付きのTweetです。", 36, "naichilab", null);
    }
    if (GUI.Button (new Rect (10, 420, 400, 90), "Tweet5(本文+URL+ハッシュタグ+ユーザー)")) {
      UnityRoomTweet.Tweet ("全部入りツイートです。", 36, "naichilab", "Unity1Week");
    }
  }
}

・CallTweetスクリプトをMainCamera(なんでもいいです)にドラッグ&ドロップ

ここまででツイート関連の準備は完了です。

・UnityのメニューからFile->Build Settings

・WebPlayerを選択し、Switch Platformを押す。
 WebPlayerの横にUnityアイコンが出ればOK

・そのまま Build And Run
・保存フォルダを聞かれるので適当に付けます。
 自分は"WebPlayerRelease"としてます。
・保存すると自動的にWebブラウザが立ち上がり、UnityWebPlayerが実行されます。

以上です。

ぜひご利用ください。


UnityWebPlayerの公開サイト
→UnityRoom http://unityroom.com/

他の記事もどうぞ
Unity系記事まとめ

Related Posts Plugin for WordPress, Blogger...