【Unity】JsonUtilityを勉強してみた

いつものサボり癖… ではないですよ~ 体重管理アプリを作っていて泥沼にハマっています。 データ管理を月別に保存や表示させるのに どうやったらいいか悩んでおります。 今までは、コードがなんとなく思い浮かんだのですが、 今回は頭がまったく働いてくれません。 (ノ_<。)うっうっうっ 思考停止で進んでないので、記事も書けなかった次第です。 (´~`;)才能ないな~ そんな状況なんですが、少し調べた事があったので、 記事にしてみたいと思います。 大量のテキストデータを保存するには、 CSV形式かJson形式を利用する事になるのですが、 以前、CSVを記事にしたので、 今回は、Json形式を記事にしたいと思います。 ジェイソンと言えば、13日の金曜日! (;^o^) \(ToT )昭和か! JSONとはJavaScript Object Notationの略で、 JavaScriptのオブジェクトの書き方を元にしたデータ定義方法なんだそうです。 UnityでJsonを使うには、いくつかの方法があるみたいですが、 JsonUtilityが機能としてあるので勉強してみます。 侍ブログさん 【Unity入門】5分で簡単解決!JSON形式のデータを扱う方法 メモの穴さん UnityでJSONファイルを読み込むメモ 有益な情報ありがとうございます。<(_ _)> ブログを参考にJ…

続きを読む

【Unity】カレンダーを作り直してみた

体重管理アプリを作っていて、 データの保存や表示の処理を悩んでいるケロです。(?+_+) 以前のアプリをブラッシュアップしようと思ったのですが、 作ったファイルが見当たらないので、一から作り直しております。 そんな事はさておき、 体重管理アプリと言う事でカレンダーが必要になるので、 昔の記事を読み返してみて、愕然としております(-_-;) 無駄が多い… 自分で見ても分かりにくい… 読んでくれた方には申し訳にない内容になっていました。 これに関しては今も変わらないような… (°0°)\(--; オイオイ それに開いた日付の月しか表示できないので、 使い勝手が悪いってのもあって、一から作ってみる事にしました。 はたして、あの頃より上達したのか その辺も見てもらうと面白いかもしれません。 早速、Unityの設定をします。 プラットフォームはandroidです。 まず、Canvasを設置するのですが、 今回は、画面比率を18:9縦で設定して、Canvasサイズを横720×縦1440にします。 UI用のCanvasを追加してレイヤーを1に設定します。 このCanvasにImageを追加してFrameにリネームします。 このフレームは、カレンダーの枠になります。 以前は、カレンダーの枠をスプライトで取り込んでいましたが、 わざわざ用意しなくてもフレームもどきが作れるので紹介します。 フレームのサイズは、横716×…

続きを読む

【Unity】unity-ugui-XChartsを使ってみる

2020/09/17スクリプト修正・追記 久しぶりの更新ですが、いつものようにサボり… ではなくて、作りたい物ができたので集中しておりました。 作っていた物なんですが… 最近、何もしてないので激太りしてまして(..*) オハズカシイ… ダイエットしなきゃ!となりました。 以前、体重管理アプリを作ったのですが、 カレンダーに体重を入力して保存するだけのものでした。 アプリで作ったCSVファイルを、Excelでグラフ化していたのですが、 非常に面倒でアプリの意味が無いと言うか… 当時は、カレンダー作成や保存処理で手一杯だったので、 グラフなんて無理と諦めていました。 すっかり忘れていた体重管理アプリなんですが、 グラフを追加したくなったので、勉強しておりました。 そんな訳で、ブログの更新が…  (;^_^A アセアセ・・・ グラフを作るならLineRendererなんですが、 World座標管理、uGUIに乗せれない… 使いづらい所です。 ただ線を引くだけなら良いのですがね~ ( ̄~ ̄;) ウーン 仕方が無いのでアセットに頼る事にしたのですが… GraphMaker $45 GraphAndChart $70 DynamicLineChart Free 有料アセットは、回避したいので、DynamicLineChartを入れてみました。 ただ、少し思っていたのと違ったので、保留にして違うのを探す事に… ヒ…

続きを読む

【Unity】スプライトで罠にハマる

大したネタもないので、小ネタを… アセットストアから完成品を落として、 スプライトの差し替えをしようと操作していたら、 スプライトがアタッチできない事がありました。 最初は、完成品アセットなんで、何かロックされているのかな? と思っていたのですが、アセットから落としてきたスプライトなら アタッチできる事に気付きました。 自分でインポートしたスプライトは、 なぜかアタッチができない状況でっす。( ノД`)シクシク… 2DスプライトやCanvasのImageにもアタッチできません。 正直、訳が分からない状況だったので、 Unityのトラブル? それとも完成品アセットの仕様? この辺りを調べる為に自作のプロジェクトを立ち上げて、 様子を見る事にしました。 プロジェクトを立ち上げた所で、 背景スプライトをインポートします。 インポートしたスプライトをドラッグしてヒエラルキーに落とします。 無事にオブジェクト化できました。 やはり完成品は、何かのロックでもされているのでしょうか? アセットは、2D Flexible Platformer Controller、アクション系の完成品アセットです。 改変OKで、商用利用OKの優良な無料アセットですぅ。 さてさて、スプライトをインポートしてみます。 このスプライトをドラッグして、ヒエラルキーやシーンビューに持って行っても ドロップ不可のマークが出ます。 正…

続きを読む

【Unity】ドロップしたオブジェクトを元に戻す

初めての方は、関連記事 【Unity】Objectをマス目に合わせてDropする この記事から続く内容となっています。 大砲オブジェクトの合成と言う事で書いてきましたが、 いよいよ完結となります。 一応、曲がりなりにも合成ができるようになりました。 (バグが残ってそうですが… ) しかし、これで終わりとは行かないですね~ 現状、違う種類や違うLvの大砲をドロップすると 削除もされず重なったままになります。 合成操作としては問題ありでっす。(..*) オハズカシイ・・ 違う大砲が重なった場合、動かす前の位置に戻す必要があります。 動作は ・ドラッグ ・ドロップ ・違えば戻す 単純な動作です。 しかし… 実は、かなり試行錯誤しながら処理を考えました。 出来上がった処理が、 なぜ?となるので説明したいのですが、 上手く説明できないと言うか… なので、検証していった事をそのまま記事にしようと思います。 最後に完成版のスクリプトを載せるので、 検証内容を読み飛ばしてもらってもOKでっす。 まず、大砲の戻り位置を記憶させる必要があります。 単純な話、ドラッグ時に大砲の位置を記録すればいいのですが… private Vector3 backpos; //大砲の戻り座標 //ドラッグ時の処理 public void OnDrag(…

続きを読む

【Unity】オブジェクトをドロップして合成する

大砲を合成する所まで出来たわけなんですが、 コラインダーが複数接触しているとバグる可能性があると言う事で、 修正が必要になってきました。 コラインダーの大きさを調整してみたり、 オフセットを弄ってみたり… なかなか思うようにいかないものですね~(~ヘ~;)ウーン そもそも、ドラッグ中は合成しないと言う条件が 厳しかったりします。 OnCollisionで合成処理をすると何かに接触しただけで合成されるので、 コラインダーを使わずに重なりを判別する方法… 余計に複雑になりますね~(T^T) ヒック いろいろと考えてる内に、 ドラッグ中にOnCollisionが働かなければ良いのでは!? と言う考えに至りまして、処理方法を変える事に… まず、ドラッグ中にOnCollisionが働かないようにするには、 コラインダーが無ければいいので、非アクティブにしてしまえ! と言う考え方でっす。(^.^) オホホホ DragScript private BoxCollider2D boxcoll; //コラインダー取得変数 void Start() { boxcoll = this.GetComponent<BoxCollider2D>(); } //ドラッグ時の処理 public void OnDrag() { …

続きを読む

【Unity】ドラッグ時の接触判定

ドロップ時の処理で書き始めた内容ですが、 少し問題がありまして… 修正でスクリプトを書き直していたら訳が分からなくなって… 頭の中がこんがらがっています。 当然、何から書いていいのやら… 頭の中でまとまってないと書くのも難しいと言うか(~ヘ~;)ウーン 伸び伸びになってるテーマを小出しで書いていくので、 暫くお付き合い下さいませ(゜゜;)ゴメンネ・・・ さて、大砲の複製まで出来るようになったので、 後は、フィールドに出して行けばいいだけなのですが、 やはり合成が必要になってきます。 合成に関しては、Collisionを使えば簡単に判断できるのですが、 問題は、ドラッグ中なら合成しない! 重なっただけで合成してしまうと、元に戻せなくなるので、 ”ドロップ時に合成する”が必要になるかと思います。 しかし、OnCollisionEnterは、衝突時にしか反応しないメソッドなので、 一度、呼び出されると再衝突しないかぎり働かないのが難点です。 OnCollisionStayでも良いのですが、少し重ねておくと 反応して処理が実行されます。 少し工夫が必要になります。 そこで、大砲同士が衝突と離脱を判断できるようにしてみようと思います。 DragScript using System; using System.Collections; using System.Collections.Generic; using …

続きを読む

【Unity】ドラッグしたオブジェクトの複製

更新が遅くなりました。 オブジェクトの合成処理を作っていて、バグある事に気付いたのですが、 修正案がなかなか出なくて悩んでおりました(;-_-;) ウーム 余り参考にならないかもですが、順を追って説明していきます。 今回は、オブジェクト合成の前段階、オブジェクトの複製について まとめたいと思います。 前回、マス目にハメる動作まで無事作る事ができました。 こうなるとタワーディフェンスなんかでもある、 オブジェクトの合成を作ってみたくなります。 同じオブジェクトを重ねてドロップするとレベルアップするやつです。 今は、大砲が各種一枚しか生成されてないので、 フィールドに出してしまうと予備が無い状態になります。 なので、大砲をドラッグして移動させた時に複製を作る処理を考えてみます。 単純にドラッグしたら複製するようにすれば良いのですが、 そうするとドラッグする度に複製されていく事になるので、 非常にまずい処理になります。 そこで、初期位置にセンサーを用意して、 大砲が離れたら感知できるようにしてみます。 まずセンサー替わりのオブジェクトを用意します。 画像では分かりにくいのですが、 各種大砲の下にCellと言うオブジェクトを用意しました。 Cellは空のオブジェクトにBoxCollider2Dを載せます。 Cellはセンサーなので、コラインダーのトリガーにチェックを入れます。 コラインダーのサイズは50×50くら…

続きを読む

【Unity】Objectをマス目に合わせてDropする

また、いつものサボり癖が発動してしまいました(;^_^A 記事にできる内容もなかったので、 更新ができないと言うかヤル気が無かったと言うか… (;^o^) \(ToT )あんたほんとにそれでいいの このままでは、ダメなので少し実験した事を記事にしてみます。 以前、ドラッグについて記事にしたのですが、 オブジェクトを掴んで動かすまでは、作る事ができました。 単純な移動の処理なら問題ないのですが、 ゲームでは、オブジェクトを指定の範囲に置いたり、 同じオブジェクトを合成したり、 オブジェクトをゴミ箱にポイしたり、 実際には、ドロップ時の処理が必要になります。 この辺りを試してみたので、まとめてみたいと思います。 まずは、マス目に合わせてドロップする事を記事にしてみます。 将棋やオセロなんかでは、必要になる処理です。 ジグソーパズルにも使えるかと思います。 まず、マス目のある盤面とドロップするオブジェクトが必要なので、 こんなものを用意してみました。 大砲のオブジェクトとマス目のフィールドを用意してみました。 大砲をドラッグしてフィールド上でドロップすると ドロップの座標からマス目にハマるように処理を行います。 まずは、大砲をドラッグ操作できるようにスクリプトを組みます。 ドラッグ操作については、 【Unity】ドラッグでオブジェクトを動かしてみる または、 【Unity】追いかけてくる敵を作ってみ…

続きを読む

【Unity】アニメーションのお勉強(BlendTree編)

クリップの遷移まで出来るようになりました。 ロボのモーションが向く方向で変わるとうれしくなりますヽ(´▽`)/~♪ こうなると折角なので動かせるようにしたいと思うのが親心。 動かせるように処理をしていきたいのですが… 実は、当初はクリップ遷移までしか考えてませんでした。 なので、ここからは内容が薄くなるかも… ご了承下さいませ(ToT)>゛スンマセン 動きを作ると言いましたが問題点が山盛りでっす。 単純に移動スクリプトを組めば良いだけなのですが、 折角なので、動きに連動したモーションも考える必要がありそうです。 例えば、ロボの向きが変わるとモーションも変わるのですが、 keyを離してもモーションが動き続ける事です。 ロボ自体は止まってるのに、足や手は動き続けるのっておかしいですよね。 それなら停止している画像クリップを作成して、 keyを離したら遷移すればいいと思うのですが、 トランジションが複雑になりすぎます。 正直悩みました。 もう少し簡単に処理できないかとGoogle先生にお伺いすると… BlendTreeを使え!と教えて頂きました。 ブレンドコーヒー??ダメダコリャ!( ~っ~)/ σ(^_^;) BlendTreeとは、 ゲームアニメーションでは 2 つかそれ以上のモーション間でブレンドを行うことがよくあります… Unity スクリプトリファレンス ブレンドツリー から抜粋 読みま…

続きを読む