C#で Dictionary<A, List<B>> を IReadOnlyDictionary<A, IReadOnlyList<B>> として公開する

C#

してはいけないこと(Dictionary内の要素を書き換える)は、できないようにするべき。ということで、 こういうコードをよく書く。 public IReadOnlyDictionary<string, IReadOnlyList<int>> PublicDictionary { get; } private readonly Dictionary<string, List<int>> _privateDictionary = new(); public</string,></string,>…

Unityでスクリプトからパッケージ依存を削除する方法

iOS/AndroidではUnityIAPを使っているけれど、Windowsでは使用していない。 それにも関わらず、UnityIAPが有効になっていると勝手にUnity Analyticsも有効になり気持ち悪いから Windowsビルドの時だけパッケージ依存を削除したい・・・みたいなことあります…

ChatGPTに実際にローカルファイルの操作までお願いしてみる

ImageMagickの引数とか本当に覚えられないじゃないですか。 そんなとき、ChatGPTに「ImageMagickで、a.pngの色を反転してb.jpgに保存する方法を教えて」と聞けば、 結構正確なコマンドを返してくれてマジで便利です。 でも、コードをコピペするのももはや面…

SteamDeck上でUnityのVideoPlayerを利用しても動画が再生されない時の解決策

これはゲーム開発者向けの記事です。 プレイヤーの方で対応方法を探している場合は[SteamDeck Proton GE]などでググってください。 症状 Winows上では、正しく動画が再生されている。 SteamDeck上で再生しようとすると、動画の代わりにカラーバーが表示され…

2022年買って良かったもの3選

2022年も終わりということで、今年買って良かったもの3選です。 一目惚れ部門 主人公のリュック グレープアカデミー ポケモンセンターで偶然見かけて、 一目惚れしてその場で買ってしまったリュック。 その後は何度行っても置いておらず品薄っぽい?のも運命…

ImageMagickで、背景かそれ以外かで2値化したマスク画像を作る

こういう画像から こういう画像を作りたい時。 background=$(convert input.png -format %c histogram:info:- | sort -rn | head -n 1 | xargs echo | cut -f 2 -d' ') convert input.png -fuzz 10% -transparent rgb$background tmp1.png convert tmp1.png …

C#からGoogle Play Consoleの売上レポートを取得する

AppStoreはこちら → C#からApp Store Connect APIを叩いて売上レポートを取得する 悩んでググってこの記事に辿り着いた方向けの何の補足もない不親切な記事です。 公式のドキュメント using Google.Apis.Auth.OAuth2; using Google.Cloud.Storage.V1; const …

C#からApp Store Connect APIを叩いて売上レポートを取得する

Google Playはこちら → C#からGoogle Play Consoleの売上レポートを取得する 悩んでググってこの記事に辿り着いた方向けの何の補足もない不親切な記事です。 Pkcs8PrivateBlobとかはWindowsでしか動かないので使ってません。 App Store Connect APIのドキュ…

Unityで開発用に「どこでもセーブ」を実現してみる

まえがき ゲーム開発中、何かちょっと変えるたびに、何度も何度も同じ場面まで行って確認するのは面倒ですよね。 現在のシーンの状態を丸っと保存して、そこから再開できる「どこでもセーブ」機能を実現してみました。 Unityで「どこでもセーブ/どこでもロー…

Dropbox SDK for DotNetで300MBを超えるファイルをアップロードする

Unhandled exception. Dropbox.Api.ApiException`1[Dropbox.Api.Files.UploadError]: payload_too_large/.. というエラーが見た方向けの記事です。 client.Files.UploadAsync メソッドでは、300MB以下のファイルしかアップロードできません。 (ドキュメント…

Unityのログ表示を気軽にちょっとだけ見やすくする

Console Windowを大幅に改造してるプロジェクトも多いと思いますが、 気軽にちょっとだけ見やすくしたいこともありますよね。 完成形がこちら。 見た目の特徴 カテゴリ毎に色の違う■が出てて、カテゴリの認識がしやすい パラメーターが読みやすい 書き方の特…

AddressableのPlay Asset Delivery(PAD)対応、全部"install-time"で良いケース

App Bundle に含まれている設定(arm64-v8a)で、初期インストールのサイズは 150 MB 以下である必要があります。 というメッセージに困って辿り着いた方向けの記事です。 そして、公式のPlay Asset Delivery対応サンプルを見つけたものの、 いやいや面倒す…

UniRxでThrottle.Subscribe中に値を変更すると、その値が無視されてしまうので気をつけて。という備忘録

確かによく考えるとそうなるかもしれないけれど、微妙に直感的ではなくて引っかかった挙動があったのでメモ。 簡単なコードから話を始めます。 var hoge = new ReactiveProperty<int>(0); hoge .Subscribe(x => { Debug.Log($"{Time.frameCount} Subscribe Start </int>…

Unityでも便利なLINQメソッドを色々使いたかったのでExtraLINQをさらに便利にしました

github.com Unityでも便利なLINQメソッドを色々使いたかったのでExtraLINQをUPM対応しましたから早一年。 この1年で増えたメソッドを紹介します。 TryGetFirst / TryGetLast DictionaryのTryGetValueっぽく使いたい時に。 if (items.TryGetFirst(x => x.Valu…

Unity2021から追加されたil2CppCodeGenerationを適切に設定するとIL2CPPビルドが最大50%早くなる

Unity2021もLTSがでたので安心して使えますね。・・・使えてますか? それはそれとして、 Unity2021から追加された EditorUserBuildSettings.il2CppCodeGeneration を適切に設定するとビルドが最大50%早くなるというお話です。 使い方 EditorUserBuildSettin…