◎ HowToMake全部見せます企画 ~Unity版~ ◎


7ページ目

§18 ツイートボタン
タイマーの数値を設定したついでに、ツイートボタンの実装をしようと思う。
えーっと、スクリプト「Stimer」から「Button」にstring timtxtを渡せばいいんだけど、
1.いつ
2.どうやって
が問題ですな。

1.いつ
タイマーが止まった時に、でいいよね。
タイマーはゲーム中、1回しかOFFにならないので、OFFにしてくれと言われた時がいい。

2.どうやって
SendMessageしか知らないので送りましょう。
いやー、何度書いても<シーンにあとから配置されたもの>からSendMessageするのはめんどくさい。
直前でゲームタグから相手をFindしてからSendMessageですよ。めんどくさい。
今回さらに面倒臭いのは、タイマーが止まった時はまだ終了画面がシーンに配置されてないので、
StimerからButtonへ直接SendMessageができないんです。
仕方ないから、Stimer→TargetCtrl→Buttonのコンボ決めていくっきゃない。

そうそう、
最近知ったんですけど(遅い)SendMessageって数値や変数も送れるんですよ。

<送信側>
int ツルツル = 1023;
SendMessage("ハゲ", ツルツル);

<受信側>
void ハゲ (int ザケンナコラ){
フサフサ = ザケンナコラ;
}

こうやって書くと、
送信側がツルツルな整数の1023を送り、
受信側の関数ハゲが、まず1023をザケンナコラに入れて、フサフサの中身にザケンナコラを入れる、つまりフサフサが1023になる、
ということになるそうです。
送信元と受信先の型が一緒だったら、floatでもstringでも送れます。
ツルツルの部分に直接数値を書き込めば、数値を送れます。

3.コンボ決める
えーっと、それで、
「Stimer→TargetCtrl→Buttonのコンボ」のところを詳しく考えると、、
TargetCtrl「ゲーム終わったよ >Stimer」
 →Stimer「スコアはこの数値だよ >TargetCtrl」
 →TargetCtrl「スコアこれだってよ >Button」
 →Button「オッケーこれでツイートするわ」
という流れになるみたいです。
§17の終わりの方でタイマーを止めるところに「timctrl ();」って書いたと思うんだけど、
この一文を、関数の中の処理の一番最後に回す。
すべての終了処理が終わってからタイマーが止まるように。
(適当に途中とかに挟んでおいたらあとでエラーが出ました。前科アリ!)
スコアをTargetCtrlに送るので、
Stimerのtimerを止めるところを
tim = false;
GameObject TC = GameObject.FindGameObjectWithTag("TargetC");
TC.SendMessage("gameEnd", timtxt);
こんな風にする。2.で書いた<送信側>です。timtxtはstringなので、受信側もstringで準備。
TargetCtrlに新しく受信用のvoidを作る。
void gameEnd (string s){
string scor = s;
GameObject BTN = GameObject.FindGameObjectWithTag("Finish");
BTN.SendMessage ("Owari", scor);
}
「timetxt」を「s」として受信して、それをscorとする、と。
で、さらにそれをButtonに送りたいので、
GameClearとGameFaildのプレハブに初めから入ってる「Finish」というタグをつけて、
同じようにSendMessageで送り出す。
最後のButtonには
private string scor;

void gameEnd (string s){
scor = s;
}
と書けば、見事ボタンのスクリプトへスコアとして文字列が送られるはず。
心配ならDebug.Logを書いてみてみたらいいんじゃないですかね。


4.ツイートさせる
ボタンを作った時にツイート用のvoidを用意しておいたと思うんですが、
そこに
Application.OpenURL ("https://twitter.com/intent/tweet?text= " + WWW.EscapeURL (scor + "秒でクリアした!"));
と書き込めば、
ツイートする画面に遷移するはず。(新規ページではない)
まぁ、試しに短い文でボタンを押してみたらいいと思うんですよ。

あほげー的には(そうだった、これあほげーにエントリーしてほしいから書いてるんだった)
「スコア」+「ゲームのURL」+「#ahoge」
が入ってると、期間中はそのツイート見ていろんな人がやってくれると思う。
ハッシュタグがあると、あほげープレイしてくれてる人は見てくれているように感じるですます。

クリアした時と失敗した時の文言を適当に書いておいて、
次はボタン自体の設定をするですよ。

GameClearとGameFaild、それぞれのプレハブの中のツイート用ボタンの一番下、
On Click()のところに、§12の時に倣って、
+を押してGameObjectのところにそれぞれの親を選択して、No FunctionのところからButton→Tweet用の関数を選択。
ついた。

§18分が全部うまくいくのか、ちゃんと再生して確かめる。確認が大事。


ん、ツイート画面が無事に表示され、ちゃんとツイート内容に秒数が反映されてるみたいだ。

刀剣乱舞が見えてるけど気にしない。三日月氏~~出てきてくれ~~~(長曾根&浦島&明石も当然のように居ない)

このセクション作るだけで3時間くらいかかってます。死ぬ。






←前へ 目次 次へ→