読者です 読者をやめる 読者になる 読者になる

unity SocialConnector ボタンを押すとスクリーンショットを撮って投稿する

概要

SocialConnectorを利用して、以下の機能を実装する
Android、iPhonでボタンを押すとスクリーンショットを撮ってツイッターに画像投稿する

作業

zipをダウンロード

以下のコミットのデータを取ってきた「Facebookでテキストをシェアできなくなったので追記 #19」
SocialConnector以下のディレクトリーをコピーしてAsset以下に置く

スクリーンショットをSDカードに保存するように修正

f:id:yasuaki-ohama:20151201173011p:plain

シーンの修正

Sampleシーンの以下の場所にのSample.cs代わりに以下のスクリプトを入れる

ShootUI.cs
CaptureAndShareImage.cs

f:id:yasuaki-ohama:20151202005939p:plain

using UnityEngine;

public class ShootUI : MonoBehaviour
{
	GUIStyle style;

	void Start()
	{
		style = new GUIStyle ();
		style.fontSize = 100;
	}

	int count = 0;
	void OnGUI()
	{
		Rect rect = new Rect (10, 100, 400, 300);
		GUI.Label (rect, count.ToString (), style);
		if (GUILayout.Button ("<size=30><b>CaptureAndShareImage</b></size>", GUILayout.Height (60))) {
			GetComponent<CaptureAndShareImage>().Shoot ();
		}
		count++;
	}
}

gist.github.com

gist.github.com

CaptureAndShareImageの構造説明

ファイル名が同じ場合の、「すでにファイルが存在している時」対処をしなければならない。
つまり、ファイルが上書き状態にあるかどうかの判定処理を追記しなければならない(以下のような存在確認だけではダメ)。

	do {
		//Debug.Log ("Temporary ScreenShot hav not been written yet. " + GetImgPath + fileName);
		//書込み処理のために1フレーム待つ
		yield return new WaitForEndOfFrame ();
	} while (!System.IO.File.Exists (GetImgPath + fileName));

また、Twitter投稿時に同じ画像ファイル名を送ると前に利用した画像が出力されてしまい新しい画像が投稿できないことがあった。
以下の理由により、写真を撮るたびに投稿画像名を変更した。

	private void CreateScreenshotsFileName()
	{
		fileName = DateTime.Now.ToString ("yyyyMMddhhmmssfff") + ".png";
	}

最後に、このオブジェクトの生成時に毎回画像を削除するようにした。

結果

f:id:yasuaki-ohama:20151203201404p:plain