デリゲートがちょっとわかるようになった時の話 (C# Unity
デリゲート(委譲)って何だろう、
と書き方を調べて、真似て書けるようになっても結局
「どう便利なの?どういう場面で使うの?」となってしまう。
そもそも「委譲って何だろう?」という疑問は、
「やったー、自分のプロジェクトのここに使ったら便利そう!」と思えることができたら、
ちょっとくらいコードの書き方が変わってたって、覚えることができる気がする。
こんな物語を考えた(間違ってたらお手柔らかに教えてね
茶色ウサギドラマークラスは演奏して歌を歌うことができる。
歌の歌詞は番号を受け取って、その番号に当てはまる歌詞を探して歌う。
持っているのは1 オウイエ〜 2 フゥー 3 ラブユー♪ といった具合である。
白猫クラスは、オウイエ〜と歌って欲しい。
しかし番号で示さなければいけないので「えーと、2番を歌って」と命令する。
しかしいざ実行すると、オウイエ〜は2番ではなく1番の歌詞だったので
「1を歌って」と命令し直した。
番号が求めてる結果かどうかは、歌ってからじゃないと分からないからね・・。
すると茶色ウサギドラマークラスの演奏システムを使いたい者が増えた。
カエルは「ゲロゲロと、雨雨フレフレ♪の2つを歌って欲しい・・」と思っている。
しかしゲロゲロと歌う結果は無かったので、
茶色ドラマークラスの歌詞を書き足して増やすことにした。
その歌詞は、5番目と6番目に書き足された。
すると後日・・・カブトムシが現れて「ビーズのようにきらめく樹液が・・うんたらかんたら・・」という歌詞を要求した。
茶色ウサギドラマークラスは歌詞を追加し続けた。その時歌詞は120を超えていた。
後日リスが現れて「お〜私のドングリ♪ 英語モードではOh my baby girl♪ね。」とさらりとローカライズ を要求した。
この要求を満たすためには、120を超えたすでにある歌詞にも”日本語版なら・英語版なら”という条件を、追加しなければならなかった。
後日ネズミがやってきていつものように145番に歌詞を追加していった。
(実はネズミは歌詞の番号を間違えて持っていて154番だと思っている・・・・・)
後日犬がやってきて160番の歌詞を、日本語版とイタリア語版(英語版なし)を要求し、チョウチョがやってきてドイツ語版とロシア語版(日本語、英語、イタリア語版なし)を要求したが、ドラマーは要求に応えられなかった。
さらに後日キツネが現れて「ランダムに数字を決めて、偶数なら”右へ”、奇数なら"左へ"、さらに10ぴったりだったらドラマーが客席にジャンプしてくれ」
と言い出した。
ランダムに数字を決めるのはいいけど、それは猫やカブトムシやリスやカエルの歌詞と矛盾したりしないかな?
歌詞ももはや歌詞なのか分からなくなってきたし、
ジャンプ??歌詞とかそういう・・なんかもう、違う。
茶色ウサギドラマークラスは
白猫に呼ばれた時は演奏を初めてランダムに数字を振って日本語版か英語版か聞いて言われた歌詞を歌って右でも左でもなくてジャンプしない。
カエルに呼ばれた時は演奏を初めてランダムに数字を振って日本語版か英語版か聞いて言われた歌詞を歌って右でも左でもなくてジャンプしない。
キツネに呼ばれた時は演奏を初めてランダムに数字を振って日本語版か英語版か聞いて言われた歌詞を歌うか歌わないか分岐して右か左かを決めてジャンプをするかもしれない。
ネズミが存在しない154番の歌詞を呼び出した時、茶色ドラマークラスはnullを出して泣いてクラッシュした。
じゃあ、カブトムシはどうだったっけ。
もう森の誰も詳細が分からない。
森の仲間たちはもっとシンプルにしたいと思った。
茶色ドラマークラスは、演奏を初めて「何かする」をするだけにした。
「何かする」内容はみんなに決めてもらうことにした。
白猫が使いたい歌詞は、白猫に持っていてもらうことにした。
番号じゃなくて、使いたい歌詞そのものを自分で持っていてもらう。
これで白猫が使いたい歌詞なのに「歌詞の何番だったかな・・」と不安になることもない。
カエルが使いたい歌詞はカエルのカバンの中に。
キツネが使いたいランダムの数字も、キツネがサイコロを振ることにした。ジャンプの仕方も、右と左が何なのかも、茶色ドラマークラスはさっぱり知らないけど、知らなくていい。
茶色ドラマークラスを使いたい動物たちがこの後何十何百と増えても、何語で歌おうが
ジャンプしようが、茶色ドラマークラスは何にも知らない。
茶色ドラマークラスは演奏を初めて「何かする」だけになった。
「何かする」関数はそれぞれの動物たちの中にある。
実際どういうとこで使ってて便利に思ったか
文章をセーブしたりロードしたりするクラスがあって
その文章を使いたい別クラスがあった。
デリゲートを使ったらセーブキーとか移動させないで
「ロードする」の一文で全部を使えたので便利だった。
コードの書き方
実際にC#を書く際はこちらがわかりやすかったです。
都道府県を覚えるアプリ(iOS)を作り始めました
追記2021/03/27 リリースしました
アイデアがあったので小さい子ができる日本地図を覚えるアプリを作り始めました。が、日本地図を覚える問題を作る側がいちばん日本地図を覚えるなと思いました。こんな毎日地図見るのはじめてだよ
— smm(すみ)🍢 (@sunapple99) 2021年2月15日
北海道でっかいどう・・作りたいシステムが作れるかわからないけどやってみるどう pic.twitter.com/V5jjD8koqF
— smm(すみ)🍢 (@sunapple99) 2021年2月17日
アイデアとしましては、自分が都道府県と紐付ける事物を設定できるという点です。
画像と、文章を考えています。
画像をカメラロールから設定する方法としてunimgpickerを使用させていただきました。
Unity iOS/Android で端末内の画像を使うためのプラグインを書いた
実機テストでも一応うまくいっているのですが、ちゃんとできるかな・・?
対象年齢は4、5歳から小中学生。もちろん大人も使えますが
デフォルトはひらがなだったり文字の大きさや雰囲気は
ティーン向けにしています。
完成まで作れるかな。アイデアを考えているときはとっても楽しいです。
unity1weekのゲームをiOSアプリにしてみる
今回挑戦したかったことは
unity1weekで作ったゲームをアプリにするのに何が山になるか?
NCMBで作ったランキングって動くのかな?
UniRxをはじめて使ったけど、iOSで動くかな?
でした。
大体1週間くらいリファクタリング、問題追加して
1週間くらいでテスト、ストアを準備して、配信できました。
こう書くとあっさりですが、リファクタリングが作った時と同じくらい大変でした。
まあちょっとは私にとって学びがあったということで・・
1月にクリスマス風のアプリを出すという・・笑
また来年の冬ごろに思い出して、遊んでみたいと思います。
unity1weekで作ったゲームをアプリにするのに何が山になるか?について
1、unity1weekはアイデアありきなので画面のサイズがスマホ向けでない可能性がある。
(「ふえる」で参加したクーニャンのおうちは家を積んでいくゲームだがスマホで遊ぶと
家が潰れて見えないと思う(想像だけど))
2、アイデアがApple向きでない可能性がある(何かのパロディなど
3、操作方法がスマホ向きでない可能性がある(キーボードで遊ぶ、AWSD操作など)
まあ当たり前だけど、気に入ったからピャッピャとスマホアプリにしてみよ〜
では作れないということがわかった。
CatDaily スタンプ帳(iOS) v1.0配信中
やったこと・やらなかったことを可視化!自由に自分のスタンプ帳が作れるアプリです。ハンコを押した日時・今の時間との経過時間、次のハンコとの時間間隔、目標ハンコ数、目標のハンコ間の間隔を設定できます。各ハンコは編集でき、メモを入れることができます。
使い方例
・布団干したのいつだっけ?
つい忘れがちな不定期なタスクを一目で分かるように管理できます。
・30回お手伝いしたらおこづかい!
スタンプ帳の目標を「30回」に設定してください。ハンコが埋まっていくのは楽しい!
・英語の勉強をする
テキストをしたら星ハンコ、字幕で映画を見たら花のハンコなど色々な使い方ができます。
・たまにジョギングするかも・・
目標から外れても見た目のペナルティはありません。
「しばらくできない」「今日はやったことにする」などゆるい目標にも強いスタンプ帳です。
・クセをやめる
クセを出してしまった日だけスタンプを押すと、クセをしていなかった時間がわかります。
自分流の「しなかったこと」を記録できます。
・無料アプリです。バナー広告が挿入されます。
・他デバイスと通信、共有する機能はありません。お店のスタンプ帳を作成・配布するアプリではありません。
・通知機能はありません。
目標・やったこと・やらなかったことの記録など、色々な使い方ができるスタンプ帳アプリ(iOS)ができました!よろしくお願いします。https://t.co/jIVIqNHHx3 pic.twitter.com/i171NTgQNe
— smm(すみ)🍢 (@sunapple99) 2021年1月24日
Unityアセット 水が作れるWater2D(FREE
水、オイルのようなオブジェクトを蛇口から出せるアセット
Cameras
Water2D_Spawner
WaterDrop
の3つのPrefabを置くことで使えます。
手を自由にドラッグで動かせるようになった、水アセット楽しい〜w蛇口を塞ぐ図。
— smm(すみ)🍢 (@sunapple99) 2020年11月1日
一個つまづいたところがあるのでまた今度ブログ書きます https://t.co/fumdcVwvTx pic.twitter.com/CoCZR8QXP5
水オブジェクトはLayerがDefaultのものに影響するので、
水に干渉させたくないオブジェクト(背景とか手前にあるものとかも)は
LayerをBackgroundかLayer8以降に変更します。
子供向けようアプリを作る際に
コライダーをつけたコップで水をすくったり、
コライダーをつけた手で蛇口を塞いだりする遊びを作りました。
簡単なのにすごく面白い絵が作れるのでオススメアセットです。
カメラを変えなきゃいけないのだけがちょっと使いづらかったです
有料版のWater 2D Proでは2種類の水を混ぜて色を変えたりできるみたいです。
面白そう
Unity タッチしたところに水の波紋アセットWater Ripple for Screens
できた〜タッチしたところからピチャピチャと水の波紋!気持ちいい・・☺️UnityEditorで使うのはとても簡単だったけどスマホで見るには設定が必要だったのでこれもそのうちブログに覚書したいhttps://t.co/KXsE2DWcon pic.twitter.com/zreDevXE5z
— smm(すみ)🍢 (@sunapple99) 2020年11月7日
使い方はRippleEffect Script をMain Cameraにアタッチするだけなのですが
スマホにビルドする際に一つ設定が必要です。
アセット内のRadme.txt参照
Edit->Project Settings -> Graphics
'Hidden/RippleDiffuse'をAlways Included Shadersに含める