【Unity】SpriteRendererをカメラいっぱいに広げる

タイトルの通りですがカメラの画面いっぱいに SpriteRenderer を広げる実装例を紹介したいと思います。 動作仕様は以下の通りです。 画面サイズが変わっても SpriteReneder が画面いっぱいに表示される カメラが移動や回転しても位置が追従される コンポーネ…

【Unity】無料版のDOTweenでTextMeshProを文字送りする

Unity のアセットの DOTween ですが、有償版のでは TextMeshPro に DOText というメソッドがあって簡単に文字送りできる機能があります。が、無料版にはこの機能はありません。ただし単純な文字送り無料版でも簡単に実装できるので実装方法を紹介したいと思…

【Unity】Hierarchy4でstaticなオブジェクトにアイコンを表示する

Unity の AssetStore で有償販売されている Hierarchy4 というアセットを改造して static なゲームオブジェクトにアイコンを表示する方法の紹介です。 元々そういう機能がアセット内に用意されていますがコメントアウトされているので復元して自作のアイコン…

【Unity】DOTweenでジャンプを実装する方法

今回は Unity のフリーのアセットの DOTween を使ってジャンプ動作を実装例の紹介をしたいと思います。 概要 作例 実装コード JumpParam.cs TweenParamExtensions.cs 使い方 概要 元々 DOTween にはジャンプ動作を実行するための DOJump と DOLocalJump が存…

【Unity】GithubにUnityStructShortcutExtensionsを公開しました

Github に UnityStructShortcutExtensions というライブラリを公開しました。 URL https://github.com/Taka414/UnityStructShortcutExtensions このライブラリは Unity の Transform 等のゲームオブジェクトがもつ構造体 (positionなど) の操作のショートカ…

【Unity】非アクティブなGameObjectを取得する

Unity で FindXxxx 系のメソッドを使って非アクティブな GameObject を取得する方法の紹介です。 Unity 2022.3 非アクティブなオブジェクトは取得できない まず前提として以下のメソッド呼び出しだと非アクティブなオブジェクトは取得できません。 // ★非ア…

VisualStudio2022の出力ウインドウの文字サイズを変更する

VisualStudio 2022 の「出力ウインドウ」の表示設定の場所は以下の通りです。 画面上部の ツール > オプション > 環境 > フォントおよび色 右側ペインの一番上の 設定の表示(T) > 出力ウインドウ サイズがあるのでそこを任意のサイズに変更する。 そのほかの…

【C#】指数表記の文字列をdecimal型で扱う

指数表記文字列を decimal 型に変換するための Parse メソッドを使うとエラーが発生する問題の対方法です。 // 指数表記の文字列を変換するとエラーになる string str = "-1.2345678E-07"; var value = decimal.Parse(str); // System.FormatException: '入…

【VBA】ExcelVBAから外部プログラムを呼び出して内容を処理する

Excel で VBA を使って外部のプログラムを呼び出す方法(と、そのプログラムから Excel の内容を読み取って処理する方法)の紹介です。 Excel 内の VBA にやりたいことを全部実装したほうが使い勝手はよいですが少しデメリットがあって(言語と環境が古すぎ…

【C#】BinaryFormatterは.NET8以降で削除されるらしい

オブジェクトをバイナリ形式でシリアライズするための BinaryFormatter は昔から存在して、また昔からセキュリティに問題があると指摘され続けていましたがとうとう .NET 8 で今後削除予定としてマークされました。 既に.NET 8環境ではコンパイル時にObsolet…

VisualStudioの便利機能のON/OFF方法

VisualStudio 2019, 2022 のちょっとした便利機能のON・OFFのメニューの場所のまとめです。 IntelliCodeの有効/無効 CodeLensの有効/無効 コードマップの表示 現在の選択してるソースをツリーで自動フォーカス 行番号の表示 かっこの自動補完をOFF IntelliCo…

【Unity】RigidBody2DにAddExplosionForceを追加する

RigidBody には AddExplosionForceというメソッドがあって爆発の表現を簡単に作ることができますが、RigidBody2D という2D向けのクラスには AddExplosionForce が無いため同じような処理を拡張メソッドで追加してみました。 追加した処理の実行結果はこんな…

【Google】ココアアップデートで個人ブログは終焉か

まーもともと 1次情報を上げてるわけではないし内容も大したもんじゃなかったのですがこう数字が出ると若干ショックですね。最近Googleが実施した 2点の影響を受けてアクセス数がなんと4割減少となったので記念に上げておこうかと思います。 2023年9月14日~…

Twitterを拡張機能を使って閲覧専用にする

以前表示回数を非表示にするという記事を書いてから1年近く経ちましたが、サイトの使用感が改悪傾向のため、せめて PC で Chorome から閲覧するときくらい使いやすいようにサイトの表示を制御したいと思います。 注意: Twitter(X)にバレてアカウント凍結にな…

【C#】Traceの出力先をファイルに変更する

Traceの出力先をファイルにしたりカスタムクラス用いて任意の出力先を設定する方法の紹介です。

【C#】ローカルで作成した待機ハンドルをサービスで使用する

ユーザーがログインしているアカウント上で起動しているソフトで生成した待機ハンドルを同じPC上のサービス (LocalSystem = NT AUTHORITY\SYSTEM) 上で利用する方法の紹介です。

【C#】ファイルを別の場所に書き出してから保存する

既存のファイルに内容を書きこむ時に、直接対象のファイルを開いて書き込みを行うとアプリが強制終了するなどでストリームが異常終了するとファイルの内容が破損する場合があります。この問題を避けるためには以下のアプローチが必要です。 直接ファイルを開…

【C#】WebApplicationBuilderで自作の定義ファイルを扱う

WebApplicationBuilder などでは定義ファイルとして appsettings.json と appsettings.Development.json は最初から利用できます。 この定義ファイルの仕組みに自作の JSON ファイルを追加しIConfiguration 経由で内容を利用できるようにしたいと思います。 …

【C#】UTF-8のBOMあり/BOMなしの指定

UTF-8はBOMの有無があり時と場合によって適切に選択する必要があります。 // BOMあり Encoding bom = System.Text.Encoding.UTF8; // BOMなし Encoding withoutBom = System.Text.UTF8Encoding(false); 取得方法に対称性が無いのが気になるので Utility 化し…

【C#】コマンド実行用のバッファリングキューを実装する

バッファーがいっぱいになるまではデータをバッファリングをしながらバックグランドで1つずつ順番にデータを処理して、バッファーがいっぱいになったら空きができるまで待機となるコマンド実行用のデータキューイングクラスの実装例の紹介です。 確認環境 .N…

【C#】一定時間経過すると削除されるリストの実装

何の役に立つかはわかりませんが、一定時間経過したら削除されるリストを実装しててみました。 確認環境 .NET 6 VisualStudio 2022 実装コード 規定では Add(...) した後に、5秒以内に TryGetItemAndRemove() でデータを取り出されなければバックグラウンド…

【C#】Fisher-Yatesを使って配列/リストをシャッフルする

Fisher-Yates(フィッシャーイェーツ)というアルゴリズムを使って配列やリストを並び替えたいと思います。 アルゴリズムの考え方ですが N 個の要素数があったとして 一番最後の要素 (N) をそれ以外の前方の要素とランダムに交換する 一番最後から -1個目を…

【C#】オープン中のファイルの内容を読み取る

何度も何度も調べなおしてるので自分用のメモです。 他のプロセスが開いているファイルを開こうとすると以下のエラーが発生する。 System.IO.IOException: 別のプロセスで使用されているため、プロセスはファイル 'xxxx' にアクセスできません。 以下のよう…

【Unity】Random.Stateの内容を取得する

Unity の乱数のシードを保持している Random.State という型があります。 定義は以下の通りでシリアライズして保存することはできますが、中身を見ることはできません。中身を認識する必要は本来ありませんが、リフレクションを使えば中身を取得できそうです…

【C#/Unity】重み付き抽選機能を実装する

よくある重み付きの抽選機能の実装例の紹介です。 重み付き抽選とは要素ごとに選ばれる確率が違う抽選方法です。 例えば以下のように各々確率が違うものをランダムで選びます。 Aは50% Bは25% Cは20% Dは5% 確認環境 使い方 実装コード 確認環境 Unity 2022.…

【C#】ListをAsSpanしたい

ハック的な手法で List に AsSpan の拡張メソッドをは生やすことができますが、.NET5からは標準ライブラリでサポートされたので両対応してみます。 public static class ListExtensions { [MethodImpl(MethodImplOptions.AggressiveInlining)] public static…

【C#】アプリを多重起動しないようにする

Mutex を取得して新規に作成できれば新規の起動、取れなかったら 2つめの起動という感じに判断できます。 string key = "application_name"; using (var mutex = new Mutex(true, key, out bool createdNew)) { if (!createdNew) { return; // 多重起動にな…

【Unity】OdinのColorフィールド拡張を無効化する

自分の環境だけかもしれませんが、Unity に Odin という Editor 機能を拡張するアセットを導入すると自作のスクリプトの Color フィールドが Odin の拡張表示に置き換わります。 これによってフィールドの値をコピーするときに形式をいくつか選べるようにな…

【Unity】Hot Reloadアセットのアンインストール方法

今話題のコンパイル時間がなくなって Play の変更が実行中に動作に即座に反映される Hot Reload というアセットのアンインストール方法の紹介です。 assetstore.unity.com PackageManager から削除する PackageManager に Hot Reload の表示が追加されるので…

【Unity】enumの途中にシンボルを追加しても値が変わらないようにする

Unity で enum をインスペクターで使用しているときに、enum の途中にメンバーを追加すると、追加したメンバーより後ろの値を設定した場合値がずれる問題が発生します。 例えば以下のように Fruit 列挙型があったとします。 // Fruit.cs // もともとの定義 p…