前回の続き
細かいところが進化したけど、うまくいかないところもあるからメモ。
- スタート画面
- 音
- ライセンス表記
- キーボードの大小を選ぶ
- コントローラーのイラストを描いた
- 課題:リスタート
- ビデオ録画できるようになってる
- アプリ一覧から実行できる
- 課題
- if(キーを押した時)
- 最後に
スタート画面
アプリを立ち上げたらいきなり残り時間60秒のタイピングゲームが始まってしまうので、スタート画面を作る。
最初別のシーンをスタートシーンとして作っていたが、SceneLoadをしてメインのタイピングゲーム画面に遷移するとカーソルが表示されず、UIの入力ができない。
こんな感じにカーソルが出るはずなのに出ない。
こんな感じに通り抜けてしまう。
あっもしかしてCanvasをGo側に入力できるCanvasだと認識させる何かが外れているのか。
だからカーソルがあってないのか
仕方がないので、同じシーン内でスタートキャンバスを出して、これが出ている間はカウントを始めないようにした。
if (endcanvas.activeSelf == false && startcanvas.activeSelf == false)
{
time += Time.deltaTime;
lefttime = 60 - (int)time;
}
else
{
time = 0;
lefttime = 60;
}
この時elseを設定しないとアプリ開始してすぐに終わってしまった。
音
・BGM
BGMどういうのがいいんだろう?自分が何回も聞くから今はリラックス系にしてるけど。
・文字入力が正解だった時にポン
・60秒終わったら、かんかんかん!
効果音 『 その他音 』 by On-Jin ~音人~の時間切れ
時計のちくたくの音も入れてみたけどうるさかった。
残り10秒とかで入れたらいいかもしれないけど、スクリプト内でうまく時計に合わせてならせない><
ライセンス表記
入力するところの後ろにパネルを出した。あとこっちじゃないよっていう矢印も出した。
キーボードの大小を選ぶ
2種類のキーボードを切り替えれるようにした。
コントローラーのイラストを描いた
コントローラーのどこを押したらいいかがわかるようにイラストを描いたよ!
フリーで使えるイラストなかったから、誰かの役に立てばと思って自分でいろいろなパターン描いて配布しようと思ったけど、人のプロダクトを勝手にイラスト書いていいのかな?
意匠権・・・
検索してもよくわからなかった。
というわけでこそっと配布してます。
課題:リスタート
上のほうにも書いたけど、SceneManager.LoadScene()をしたら、カーソルがキャンバスに合わなくなって選択できなくなるので、リスタートができない。
今はいったんアプリを落として立ち上げてる。
ここらへんかな?よくわからない
どうしたらいいんだろう
キャンバスについているOVR raycasterというのを外すと、カーソルで選択できなくなるので、ロードシーンした時にこれが動いていないのかな?
ビデオ録画できるようになってる
自作アプリも録画できるようになったんですね。
昔できなかったよね?まあいいやうれしい。
これで被験者実験で最悪データをスクリプトから取れなくても画面録画しておけば何とか手動でデータ取れそう。
アプリ一覧から実行できる
実機ビルドしているのにアプリ一覧から起動できるようになった。
アルファリリースしたから?でも最初は提供元不明だったし・・・なんでや!
課題
if(キーを押した時)がうまくいってないから、前に入れた文字の変数が残っていて、同じ文字が続けて出た時に一気に入ってしまう。
その関連で、入力文字数が取れていない
そのせいで誤字率が出ていない。
次の単語に行った時に音を鳴らす。
解決した!!!
他のタイピングゲームを研究する。
if(キーを押した時)
keyboardスクリプトのAppendValueの中にa++と書いて、
TypeObjectスクリプトで
if (k1.a >b)////入力されたら
{
b = k1.a;
とすることでキーを押したときを実装しました。
キーを押したらAppendValue()が呼ばれるので何かしらそれを察知すればよかったのですね。
本当はflagとか使いたかったけど、使い方がよくわからなかった。
呼ばれたときに1にするとして、どうやって戻せばいいの?
すぐ下に書いとけばいいのかな?
まあいいや。
それよりKeyboard側は
namespace HoloToolkit.UI.Keyboard
{
public class Keyboard : Singleton<Keyboard>, IDictationHandler
{
public Text Text;
public int a;
という変数宣言。staticは付けてはいけない。
それをその変数を受け取る側ではpublicでKeyboardスクリプトがついているゲームオブジェクトを取得して、
using HoloToolkit.UI.Keyboard;
public GameObject keyboard1;
Keyboard k1= keyboard1.GetComponent<Keyboard>();
こうすることで初めてk1.value2が使える。
こうしないとエラーが出た。
なぜかほかの方法では、変数をほかのスクリプトから取得できない。
最後に
今日1日でかなり進んだ。
あとビルドするときOculus/Avatar/Resourcesを消すと早くなるらしい。
oculusgoの開発で、avatar関係の処理を使わない時は、Oculus/Avatar/Resourcesをまるごと削除するとビルド時間が半分以下になる(自分の場合)
— ガンズターン公式 (@gunsturn_tw) August 13, 2018
これしないと、使わないシェーダーのコンパイルに死ぬほど時間がかかるっぽい