もっとラクにできたのに

アプリケーションを開発する過程で、作った後になってから「もっとラクにできたのに」という点を書き記していく所 魅了屋という零細デベロッパーが書くよ https://www.miryoya.com


↑広告

選択されたToggle(チェックボックス)を一斉に選択解除する方法 by Unity

今回はUnityの話

 

前回Unity練習したよという話をした。もちろんすんなり行くわけではない。いろいろと引っ掛かったり、資料が無かったりして苦労する所もあるだろうと予測しての作業であった。しかしいざそういう場面になると腹が立つ物である。そんな悔しさ、浪費した時間などを無駄にしないために、供養する為にここに書き記す。

 

こんなものを作りたかった。

幾つか選択肢があり、複数選択する事も可能でボタンを押したら選択しっぱなしの状態を作り、リセットボタンを押せば選択されたボタンが全て外れると言う物を作りたかった。自分でも何を言っているのかがよく分からないが、修正するの面倒臭いのでこのまま進む

 

まずは普通のボタンで何とかしようとしたが、出来なかった。状態として、選択したまま(押しっぱなし)という事が出来ないようだ。調べてもその方法が出てこない。Swiftの場合は「ボタン名.isSelected」で何とかなるのだが、それに当たる物が分からなかった。そこで調査を続けていると、ボタンでは無く、Toggleというものを使えと出た。なんだそれは。

 

Toggle is チェックボックス

中見出しを英語にした意味は無い。その上カタカナ混じってるし。

Toggleとはチェックボックスの事である。これを使えばラクに作れる事が分かった。既にボタンを10個設置していたのだが、仕方ないので全て消してToggleを設置し直す事にした。色々とカスタマイズも出来るので、チェックボックスの画像を用意して、チェックを赤色にしたり、背景画像を設定したりした。しかし問題が起きる。チェックボックスをクリックしてもチェック出来ない。というより、チェックボックスの設定がデフォルトではオフにしているのに反映されない。何か設定をミスったり、新たにコードを書かなければいけないのか、分からず調べた。調べ続けたが、解決策は出てこない。この問題にずっと時間を取られてしまった。ふと気付き、他のシーンでボタンが押せないか試してみた結果、ボタンが押せない。Unity自体がおかしい事に気付き、Unityを再起動するとちゃんと設定が反映された。実はこの問題、解決するまでに36時間を要している。みんな、このおっさんみたいに時間を無駄にする前に何かあったらUnityを再起動するんだよ。

 

リセットボタンの設定

チェックボックス押せない問題は解決したが、まだ問題はある。リセットボタンの設定である。最初はコードで対応しようとしたが、これも上手くいかない。Unityの設定を観てもよく分からない。とにかくネットを駆使して調べて調べて調べまくったり、設定をいじった結果、チェックボックスが一つしか設定出来ない代物が出来上がった。俺はラジオボタンが作りたかったんじゃないんだ。もう一回設定を見直してみる事にした。

チェックボックスがチェックされているかは、「チェックボックス名.isOn」で確認出来る。しかしコードから直接リセットさせる事は出来ないようだ。コードから直接リセットする方法を採用するのを諦めて、Unityの設定をいじる事にした。とりあえず「isOn」が付いている物を設定してみては動かしてみるを繰り返し、ようやく出来た。

 

やり方

1.リセット用のToggle(チェックボックス)を用意する(ボタンでも出来るかも知れないがやってない)。

2.Toggleの「Toggle(Script)」内の「OnValueChanged(Boolean)」を見る。

3.None(Object)にをクリックすると、「SelectObject」が表示されるので、リセットさせたいToggleを選択する。

f:id:waspossible:20170602033018p:plain

4.「NoFunction」を押して「Toggle→Bool isOn」を選択する。

f:id:waspossible:20170602032742p:plain

5.必要な分だけ「+」ボタンを押して項目を足して2〜4を繰り返す。

 

そして完成

 

右往左往しながら、何とか動画の通りの物が完成出来た。動画には無いが、何も選択していない状態でリセットボタンを押しても、強制終了等の不具合も無い、まさに求めていた物が出来たのであった。

出来ないうちはもやもやもやもやしていて気分も正直良い物では無かったが、出来た瞬間のパッと気分が晴れやかになる瞬間は何度経験しても良い物だ。もちろんもっと出来る方はこの右往左往が無く、瞬時にパッとなる瞬間ばかりなんだろうなと思う。くやじいいいいいいいいいいいいい。

 

何はともあれ、進んだ事は評価しても良いと思う。現在取り組んでいるのは、以前Xcode+Swiftで作成していた非ゲームアプリで、途中で組立が思い付かなくなり、立ち消えになっていたものである。前回の記事で紹介した著者様からTwitterで「頑張ってください」とメッセージを頂いたので、やる気になって奮起している中の出来事であった。

問題があるとすれば、この成果は三日前の物で、一昨日昨日と何もしていない事である。朝2時に目が覚めて、早すぎると思い再び寝ればお寝坊さんの出来上がりというここ最近である。もちろん調子も悪く、ズルズルと一日を過ごしている悪い流れが来てしまっている。WWDCの生中継を観るには午前2時に目が覚めるというのは丁度良いのだけれども、早すぎる上に遠足前日の子供でももう少し正確に早く目が覚めるぞと思う。もしくはおじいちゃん化にまた一歩進んだという事なのか。生え際の後退やメタボ化へ更に前進していのだろうか。しかし後退しつつ前進とは忙しいなと思うし、プラマイゼロという考え方も出来るし、色々と複雑である。つまりは色々複雑だから年頃の乙女と同じと言うことか。色々と考えたがアプリの進捗がよろしくない事へのお咎め(乙が女)は程々にお願いしたい所である。

 

勝手に上手い事言って締めた気になっている午前4時前