Unity
ボタンを押した時に、文字列が日本語から英語に(またはその逆に)切り替わるようにします。 構成 クラス関係 オブジェクトの構成 コード 言語テーブル (GlobalString) スイッチ(LangSwitch) コンポーネント(TextMeshPro または Button - TextMeshPro)…
今回は言語切り替えスイッチを実装します。 構想 実装 STEP1: 特定のコードに適用してみる(小さくテスト) コード 動作テスト STEP2: 共有する領域をグローバルに持っていく コード STEP3: スイッチで切り替わるようにする Hierarchy コード 動作テスト STE…
今回は、直接簿記とは関係ない内容ですが、画面に簡単な表示切替用のスイッチ(タブ切替機能)を追加します。 構成 Hierarchy コード 動作テスト 次回 構成 表示の切り替えには、GameObjectの表示切り替え機能(SetActive)を使います。まとめて表示を切りた…
今回は、仕訳の初期化と決算ボタンを追加して、売買の結果が損益計算書と貸借対照表に反映されるようにします。 これまでの流れ 追加するボタン Hierarchy コード 貸借対照表 (BalanceSheet.cs) 損益計算書 (ProfitAndLoss.cs) 動作テスト 次回 これまでの流…
今回は、貸借対照表を作成します。 Hierarchy コード 動作テスト 次回 第2回の損益計算書とセットで使うので、利益/損失を上に書きます。 決算仕訳(イメージ) Hierarchy 損益計算書は、収益と利益は言葉が似ていて混乱しやすいですが、収益が売上、利益が…
今回から、現金での売買を実装します。 最終的な実装イメージ 画面設計 Hierarchy コード 表示テスト 参考 次回 最終的な実装イメージ 商品の売買の仕訳(三分法)、決算ボタンで損益計算書と貸借対照表を更新 現金仕訳用のフォーム今回は、仕入と売上のボタ…
今回は、前回作った貸借対照表に入力フィールドを追加して、金額を変更できるようにします。 前回の内容 入力フィールドの作成 オブジェクトの追加 コードと関連付け 貸借対照表との関連付け 入力フィールド (InputWindow) 貸借対照表(BalanceSheet) 動作テ…
今回は、RectTransform と Layout を使って、貸借対照表のフォーマットを作成します。 参考 貸借対照表 図と名称 Hierarchy 構成 レイアウト BalanceSheet (HorizontalLayoutGroup) Assets/Liabilities (VerticalLayoutGroup) フォント 各パネルの設定 アラ…
最近、難題に突き当たってしまい、すっかり更新頻度が落ちてしまったので、もう少し基礎的な技術だけを使って、具体的にゲームを作ってみようと思います。ゲームは、WebGL で作ります。WebGL は JavaScript ベースのため、無料で公開する限り、iPhone や and…
(開発中)財務諸表を学べるゲーム「ちいさなどうぐや」のグラフ作成機能をテスト公開しています。 ※このページは随時更新していきます ゲームのページ(WebGL) 以下の埋め込みからテスト機能公開サイトに飛べます tomo-mana.github.io 表示サンプル 表示サ…
第12回でInputSystemについて、第13回でEventSystemについて、それぞれ調べました。複数シーンでゲームを構成する場合は、もう少し深掘りが必要なことが分かったので、再度いくつか疑問に思っていたことについて調べました。 結論 EventSystem EventSystem同…
戦闘シーンの実装にあたって、イベントシステムはこれまでと同じ作り方でよいか迷ったので、先にゲームを複数シーンで構成する時の、イベントシステムの切り替えについて調べました。 複数シーンでのイベントシステムの切り替え コード 関連記事 EventSystem…
戦闘メニューを作る前に、戦闘メニューの拡張性について考えます。 基本的な構成 手順数 手順の省略 キャラ選択の省略(順序固定) たたかうの省略(武器とアイテムへの回数制限) まほうとアイテムの同一視(まほうとアイテムへの回数制限) かくにんの省略…
#26 の実装にあたって、少しLayoutについて調べた内容を備忘のためにまとめます。今回は、ScrollRect で ILayoutGroup、ILayoutElement がどのように活用されているのかを調べました。 概要 ScrollViewとLayout 一般的なレイアウトの構成 ScrollViewの構成 (…
シーンによるプロジェクトの分割を考えるにあたり、メッセージに求められる条件を考えました。 概要 メッセージの目的 メッセージと送り先 メッセージの型 送り先の型 メッセージと行動の決定 メールボックス ブロードキャスト あいまいな指示 情報拡散、あ…
今回は、シーンによるプロジェクトの分割の3回目で、第31回から作ってきたサービス(シーンの切り替えを仲介する機能)を使って、シーンを切り替えるメッセージを送ります。 前回までの流れ 今回やりたいこと サービスが作られたか(存在するか) 親(マネー…
今回は、前回の続きで、サービス同士を連結させて、任意のシーンにアクセスできる環境を作ります。 前回までの流れ 考え方 コード 動作テスト 次回 前回までの流れ tomo-mana.hatenablog.com プロジェクトをシーンで分割して、作業、デバッグをしやすくする…
今回から、シーンによるプロジェクトの分割に挑戦します。「シーンによるプロジェクトの分割」と呼んでいるのは、ゲーム自体を複数のシーンに分けて作業性を高め、分割・結合を簡単にできるようにすることです。ゲーム全体を一つのマネージャー(ゲーム全体…
今回は加算シーンについて。加算シーンを使って、2段階以上のシーンロードができるのかが分からなかったので、以下について調べました。 シーンはいつからロード済み?:GetSceneByName() シーンはいつロードされたと認識する?:sceneLoadedコールバック …
ObjectPoolを使いたいなと思ったところ、UniRxの中に含まれることが分かったので、インストールしてみました。UniRxは無料でダウンロードできます。UniRxは、他にもイベントのフィルタリングなどにも使用できるようで、将来的にとても役に立ちそうなので、そ…
シーン間通信を設計するにあたって、先にシーン設計とメッセージ(シーンを切り替える理由)を定義します。 シーン遷移:RPGの例 シーン構成(グループ化) メッセージ メッセージの仮想化 仮想化の例 注意点 シーン遷移:RPGの例 一般的なRPGでは、タイトル…
今回は、戦闘シーンについて考える合間に、シーンを使ったサブシステム化を試します(シーンを使ってデバッグ用のドライバモジュールを追加します)。マネージャーシーン無しでもデバッグできるようにすることで、シーン毎の作業分担だけでなくシーンの結合…
#26 の実装にあたって、少しLayoutについて調べた内容を備忘のためにまとめます。#26-2 で、テキストやイメージに合わせて枠がスケールするようにしたい場合に、LayoutGroup を2重にすることで実現できることを書きました。ContentSizeFitter でも同様の挙…
今回は、戦闘の実装に先立って、これまで作ってきたフィールドとは別に、戦闘シーンを作成して、フィールドと戦闘を切り替える管理シーン(マネージャーシーン)を準備します。 方針 シーンの構成 シーン(.Unityファイル)の作成 マネージャーシーンの作成 …
戦闘シーンの追加にあたり、シーンの基本的な操作について調べました。 シーン ファイルとしてのシーン クラス・インスタンスとしてのシーン シーンの識別子 シーンマネージャー シーンのロード シーンがロードされたか シーンをロードする条件 注意点1: Mai…
今回は、ランダムエンカウント(一定歩数歩いたら敵が出る)に挑戦しました。 乱数データ A:1歩ごと乱数振出 アルゴリズム 結果 B:目標歩数+補正値 アルゴリズム 結果 コード 画面表示 余談 次回 UnityEngine.Random については、別の記事にまとめました…
ランダムエンカウントで使用する乱数について調べた内容をまとめます。 インターフェース 乱数の値 再現性 予測可能性 Unityで使用される乱数はXorShiftを使用している?XORとSHIFTだけで計算するため軽量、かつ一周するまでに2128-1のため周期性を予測され…
今回から、戦闘シーンの設計に入ります。今回は、歩いた時に敵に遭遇する(ランダムエンカウント)を実現するために、歩いたかどうかをチェックする機能(歩数カウンタ)を追加します。 仕様 実装 ベースとなるコード 修正コード 次回 仕様 機能そのものは非…
#26 の実装にあたって、少しLayoutについて調べた内容を備忘のためにまとめます。テキストやイメージに合わせて枠がスケールするようにしたい場合に、LayoutGroup を2重にします。どうしてLayoutGroupを2重にすることで枠をスケールできるようになるのかに…
#26 の実装にあたって、少しRectTransformについて調べた内容についてまとめます。<目次> RectTransform の構成 Transform RectTransform Anchor 1点で固定(min == max) 2点で固定(Xmin == Xmax または Ymin == Ymax) 3点で固定(Xmin != Xmax かつ…