ユーザ用ツール

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
ハイハイスクールアドベンチャー_.net_maui版 [2025/10/28 06:30] – [Windows版の発行は自己内包型で] arakiハイハイスクールアドベンチャー_.net_maui版 [2025/11/04 00:33] (現在) – [リソースファイル] araki
行 36: 行 36:
  
 MacOSやiOSではどうなるのか興味はありますが、テストする環境もないので特には確かめていません。 MacOSやiOSではどうなるのか興味はありますが、テストする環境もないので特には確かめていません。
 +
 +==== 選択ダイアログ ====
 +
 +ハイハイスクールアドベンチャーでは選択肢が必要な場合、オリジナル版ではコマンドラインから入力させていましたが、Palm版を作ったときからダイアログで選択する方式に改変しています。
 +
 +なので、選択ダイアログは必須なのですが、システムがいい塩梅のを提供してくれてなければ自分でダイアログを作っています。
 +
 +.NET MAUIにはDisplayActionSheet()という選択肢から選ぶダイアログが用意されているのでこれを丸っと使うだけで済みました。
 +
 +<code csharp>
 +string gender = await DisplayActionSheet("あなたの性別を教えて下さい", null, null, "男子", "女子");
 +</code>
 +
 +のようにすれば、下のようなダイアログが表示されて、genderには選ばれた方の選択肢の文字列がそのまま返ってきます。
 +ダイアログは当然非同期なので、適宜awaitします。
 +
 +{{::hhsadvmaui:displayactionsheet.png?400 |}}
 +
 +
 +==== マルチプラットフォーム対応 ====
 +
 +.NET MAUIは、Windows/Android/MacOS/iOS のマルチプラットフォーム対応です。
 +なので単一のソースから複数のプラットフォームに対応したパッケージを得ることができます。
 +もちろん、完全にすべてが同一というわけではなく、一部は、その機種のための設定やコードなどを書く必要がありますが、最小限度です。
 +
 +フレームワークとしてマルチプラットフォームをカバーするように作られいてるので、基本的に、ほとんどの処理の機種依存を隠ぺいしてくれています。
 +
 +このあたりは AvaloniaUIのマルチプラットフォーム対応とは大きく違っている部分だと思います。
 +AvaloniaUIも Windows/Linux/Web/Android/iOSをサポートしていますが、AvaloniaUI の名前の通り、こちらは基本的にUIに関する部分を中心にマルチプラットフォーム対応をしています。
 +
 +なので、ちょっと、ファイル操作を統一的にやろうとしたら、それはUIではないので、自分でインターフェイス書いて、クラスを機種ごとに実装して、それをDI注入しろとかいう話になって案外面倒くさいです。
 +
 +.NET MAUIはこのあたりも基本的にきれいに隠ぺいしているので、リソースファイルがプラットフォームによってはSeekできないなどの制約があったとしても、比較的楽にマルチプラットフォーム対応ができるようになっています。
 +これは秀逸でした。
 +
  
  
行 278: 行 313:
 全部メモリ展開するっていうのもありかな、とちょっと思ったんですが、このゲームの基本的な構造は 500KB程度の M5 Stackや Raspberru Pi Picoなどでも動くように、けちけち使う分だけを展開するスタイル。 全部メモリ展開するっていうのもありかな、とちょっと思ったんですが、このゲームの基本的な構造は 500KB程度の M5 Stackや Raspberru Pi Picoなどでも動くように、けちけち使う分だけを展開するスタイル。
  
-Android版は当初、全部メモリに展開してたんですが、ソースを整理するときに全面的にけちけち戦略に書き直した経緯もあって、今更全部展開っていうのもな、と思い、ファイルをユーザデータ領域にコピーして使う方針に。+[[ハイハイスクールアドベンチャー Android版]]は当初、全部メモリに展開してたんですが、ソースを整理するときに全面的にけちけち戦略に書き直した経緯もあって、.NET MAUI版とはいえ今更全部展開っていうのもな、と思い、ファイルをユーザデータ領域にコピーして使う方針に。
  
 <code csharp> <code csharp>

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also, you acknowledge that you have read and understand our Privacy Policy. If you do not agree, please leave the website.

More information