C#

Yの位置が下にある画像は手前に表示する(Z座標制御編)

前回、2Dゲームの画像表示時に Transparency Sort Mode を Custom Axis にすることで Y が下にあるオブジェクトほど手前に表示する + 補助コンポーネントを作成する記事を書きましたが、今回は Y 位置が下にある画像ほど手前に表示する処理を Z 位置を使って…

Transparency Sort ModeがCustom Axisの時に前後が入れ替わる位置を表示する

初めに 2Dのゲームで画面を立体的に見せるためにY軸が下にあるものほど手前にオブジェクト描画するという技法があります。 これ「Isometric Sorting」と呼ぶのかわからないですが(自分の中ではY軸ソートと呼んでいました)が、Unityでは Transparency Sort …

C#のバージョンと.NET Framework, .NET Coreの対応表

備忘録的な意味で書き残しておきます。 (1) C#言語バージョンと各ランタイムの関係性 (2) .NET Standardとランラムの関係性 備考 参考資料 (1) C#言語バージョンと各ランタイムの関係性 .NET Framwework と .NET Core がどのC#の言語バージョンにあたるのか…

【C#】2つの変数の中身を入れ替える方法4選

2つの変数の中身を入れ替える方法を4種類紹介したいと思います。 (1) 昔ながらの方法 (2) Tupleを使う (3) 外部のメソッドで入れ替える (4) 拡張メソッドで入れ替える(値型のみ)方法 ほかにあるかな? (1) 昔ながらの方法 教科書に書いてあるやつ。最も一般…

【C#】Span<T>構造体を使ったバイナリファイルの読み書き

.NET Core 時代になって Span 構造体が追加されて、FileStream クラスとか BitConverter が標準で対応し始めたのでバイナリデータの効率的な入出力が簡単になってるようなので実験。 条件 バイナリデータで float 型を5件書き込んだファイルを用意する その…

.NET Coreでクリップボードを利用した単一実行可能ファイルを作成する

.NET Core でプログラムを(Windows上で)実行するとGUIDが100件ぶんクリップボードに設定された状態にするコンソールアプリを作成したいと思います。その際に単一実行可能ファイル形式でバイナリを出力する方法と合わせて紹介したいと思います。 今回の記事の…

.NET CoreのコンソールアプリでWindows Formsの機能を利用する

.NET Core で作成済みのコンソールアプリなプロジェクトでWindows Formsの機能を利用可能にするための設定方法の紹介です。以下の画像のように、プロジェクトテンプレートをからコンソールアプリを選択して作成したプロジェクトは Windows Formsにあった機能…

【C#】文字列を大文字・小文字を区別しないで比較する

C#

C#で文字列どうしを大文字と小文字の区別しないで比較する方法の紹介とちょっとした便利ネタの紹介です。 大文字と小文字を区別しないで比較する方法 拡張メソッドを定義する 大文字と小文字を区別しないで比較する方法 標準ライブラリの範囲内で大文字と小…

【C#】2つのDictionaryを1つにマージする

2020-09-11 2つの Dictionary を 1つの Dictionary にマージして1つにまとめる方法の紹介です。 確認環境 実装コード Linqでマージする 実行速度の比較 確認環境 確認環境は以下の通りです(とはいってもどの環境でも動きます。 .NET Core 3.1 Windows10(Cor…

【C#】System.Text.Jsonでオブジェクトのシリアライズ・デシリアライズ

2020-08-27 .NET Core 3.0 から使用可能になった新しい標準ライブラリに含まれるJSONシリアライザーの System.Text.Json の使い方の紹介です。以前取り上げた、【C#】標準機能でJSON をシリアライズ、デシリアライズする - PG日誌 を代替する標準の実装方法…

【C#】16進数文字列とバイト配列の相互変換

ちょっと何の役に立つか分からないですが、16進数の文字列をバイトの配列に見た目通りに変換する方法です。 long型などの有限長の型を経由しないため基本的に無限長の長さをそのまま扱えます。 変換方法のサンプル 以下のように確実に16進数文字列と分かって…

【Unity】JSONのシリアライズ・デシリアライズの性能比較

Unity環境で使用できる JSON をシリアライズ・デシリアライズできるライブラリとパフォーマンスを調査したいと思います。 はじめに Unity で使用できるJSONライブラリ レギュレーション 確認環境 使用するJSON型 使用するクラスの定義 測定結果 1件を100回シ…

【Unity】モーダルダイアログを実装する(2019.4版)

タイトルには2019.4版と書きましたが特に新機能を使っているわけではないです。新しい環境でもできるよーって感じです。Unity は uGUI というUI作成機能があるのでかなり簡単にダイアログが実装できます。ほとんどコードも書かないで大丈夫です。そこでアプ…

【C#】小数点の切り捨て・切り上げ・丸め・四捨五入まとめ

C#

2020-09-01 小数点に関係する処理で使用するメソッドは以下の4つ + キャストです。 各々動きを簡単に表にすると以下の通りになります。 メソッド 説明 挙動(1) 挙動(2) Truncate 小数点を切り捨て 1.5 → 1 -1.5 → -1 Floor 負数の場合より小さい方向に丸める…

【はてなブログ】全て記事のURL・タイトル・投稿日を取得する

前回の記事で投稿済みの記事URL一覧をすべて取得するプログラムを書いてみました。 takap-tech.com 今回は、記事のURLのほかに、各記事のタイトルと投稿日時を取得してCSVファイルに出力してみようと思います。 確認環境 C# 8.0 VisualStudio 2019 .NET Core…

【Unity】効果音(SE)の再生と音割れ防止処理の実装

確認環境 効果音再生の基本 効果音の同時複数再生は音割れ問題が起きる 同じ効果音再生を遅延させるコンポーネント 使い方 実装コード例 確認環境 この記事は以下環境で制作・確認を行っています。 Unity 2019.4.2f1 Windows10 VisualStudio2019 効果音再生…

【C#】App.config(アプリケーション構成)で設定を読み込む

C#の実行形式のファイル(.NET Framework, .NET Core)にはアプリーション固有の設定を記述できるアプリケーション構成ファイルというものが添付できます。このファイルに設定を書いておくと起動時に自動的に読み込まれ以降、この設定を読み出すことができます…

【C#】2,8,10,16進数文字列と数値の相互変換方法まとめ

2020-08-12 数字と文字列にはいろいろ変換方法があるのですが、一覧的に確認できると便利かと思いまとめてみました。 他にもいろいろやり方はありますがこれさえ覚えておけば問題ないと思います。 数値 → 2,8,10,16進数文字列 に変換 2,8,10,16進数文字列 → …

【Unity】C#標準ライブラリのインテリセンスを日本語化する

2020-07-13 Unity 使ってると C# の標準ライブラリのインテリセンスが無い?もしくは英語?で表示されます。 インテリセンス読めばだいたい使い方が想像できますがVS上で何も表示されない or 英語だけだと作業が微妙に止まったりするのでインテリセンスの表…

【はてなブログ】投稿記事のURLを一括取得する

とある事情で自分のブログの投稿した記事の全URLのリストアップが必要になったのでリストアップするためのプログラムをC#で書いてみました。 せっかくなのでコードを公開しようと思います。 サイトマップの形式 まずはサイトマップのデータ形式を確認します…

【C#】文字列や数値をenum型に変換する

ある任意の文字列や数値から特定のEnumに変換する方法です。 確認環境 文字列をEnumに変換する方法 シンボル名文字列から enum 型への変換 数字文字列から enum 型への変換 数値から enum 型への変換 全ての変換をサポートした Utility クラスの紹介 使い方 …

【C#】基本型に範囲チェック機能を追加する

はじめに ある変数が範囲内に収まっていれば新しい値を代入する処理などの「範囲を意識した処理」というものはプログラミングをしているを割と良く出てくる課題です。コードを書くと以下のように記述できます。 // value が 0~10の範囲内なら新しい値を代入…

【Unity】JumpByをCocos2d-xから移植する

Unityの物理エンジンを使用せずにバウンドの動作を行うためにジャンプ動作を移植してみました。計算式をCocos2d-xというゲームエンジンの「JumpBy」というアニメーションから持ってきたので動作は完全に同等です(DoTweenにもジャンプ動作がありますが個人的…

【C#】Anyメソッド解説 & 範囲指定できるように拡張する

LinqのAnyメソッド使い方と範囲指定できるように機能拡張を行います。 Anyメソッドとは 簡単な説明 Anyメソッドの使い方 Anyメソッドは使用頻度(低) Anyに範囲を指定するように拡張する EnumerableExtensionクラス 使い方 【参考】Anyメソッドの実装 Anyメ…

【C#】配列に要素を追加・削除する、中身をシャッフルする

C#の配列に要素を追加したり削除したり中身をランダム化する方法の紹介です。 配列は一度宣言してしまうとサイズ変更は(基本的に)できないです。そういった事がした場合は動的リストの「System.Collections.Generic」名前空間にある「List」を使用しますが…

Unityと.NET環境で乱数生成を共通化する

タイトルの通り、Unity環境下での乱数生成と非Unityの乱数生成を共通化しようという話です。 何故このようなことをするかというと、非UnityのMonoBehaviorも何もない環境で作成したアルゴリズムをUnityへインポートしたりするときに、UnityのRandomクラスと…

Universal RP(URP)を2Dプロジェクトへ設定する方法

2020-09-15 作成済みの 2Dプロジェクトへ Universal Render Pipeline (URP/Universal RP) を後から設定する手順をまとめました(とはいっても現状これしか設定の仕様がないので唯一の設定方法になります。 確認環境 2Dプロジェクトを作成する Package Manage…

【C#】Unityと.NET標準ライブラリの命名規則の違い

.NET標準は「System名前空間内にあるクラス類」を指します。一方のUnityは「UnityEngine名前空間内にあるクラス類」以下にあるオブジェクト群を指します。それぞれ同じC#言語ですが各々の間で大きく命名規則が異なっています。という訳でちょっとまとめてみ…

C#で1次元配列と2次元配列を相互に変換する

タイトルの通り、1次元配列と2次元配列の相互変換を行う処理の紹介です。 考え方 このような2次元配列を このような配列に変換することができます。 実装コード 早速実装例を紹介したいと思います。 ArrayUtilityクラス 配列に対する操作のため以前紹介したA…

C#でHexタイルの位置を計算する

今回は6角形のタイルの座標の計算を行うライブラリの紹介をしたいと思います。 計算した位置をいい感じに描画すると以下のような感じに並べることができます。 HexLayoutクラス:6角形のタイルを並べる 結構強引に位置を計算していますが、指定した位置を中…