2020-04-08

【Unity】Masamune framework

Masamune frameworkはUnity及びUnityエディター用の拡張アセットです。

Masamune framework

Masamune framework」シリーズはUnityにおける開発を強力にサポートします。

Masamune frameworkとは

Masamune framework」シリーズはUnity3Dでのゲーム制作を協力にサポートします。

UIの作成からタスク管理データ管理まで様々なUnityの細かい部分をサポートしており、導入することによってゲーム制作のスピードを飛躍的に高めることができます

シリーズの各ラインナップは、それぞれ連携を取ってはいますが独立しており、どれか1つのアセットを導入したとしても、もしくはすべてのアセットを導入したとしても競合したり問題を起こすことはありません。サポートしてほしいプラグインのみを導入することによりコストもパフォーマンスも良好になります

この「Masamune framework」シリーズでは現在主に下記のアセットの配信を行っています。

また、「UIElements Expansions」シリーズも「Masamune framework」内で使用することが可能です。

ここでは「Masamune framework」シリーズに共通する機能を紹介していきます。

  • オブジェクトプール
  • ユーティリティ関数
  • 拡張メソッド

オブジェクトプール

ListやDictionaryなど大量に使用するオブジェクトをプールしておき使いまわします。インスタンス化する場合の処理を軽減したりメモリを節約することができます。

ユーティリティ関数

コーディングをサポートする様々なユーティリティ関数を使用することができます。ここで紹介する主なユーティリティは以下です。

クラス名 概要
Json Jsonのエンコード、デコードを行うことができます
Text ランダムコードの生成やIDの生成等を行います
Path パスやURLのエディットが可能です
AES AESによる暗号化、復号化が可能です

拡張メソッド

ビルトインされている様々なタイプをサポートする拡張メソッドを提供しています。ここで紹介する拡張メソッドは以下です。

メソッド名 概要
int.Limit( int min, int max ) 数値を指定した数値の範囲内に制限します
string.ToSHA256( string key ) 文字列をSHA256でハッシュ化します
long.ToDateTime( ) UNIX時間のタイムスタンプをDateTime型に変換します
DateTime.ToUnixTime( ) DateTime型をUNIX時間のタイムスタンプに変換します

利用方法

インポート

下記の「Masamune framework」シリーズのいずれかをご購入ください。

この記事に記載されている機能は「Masamune framework」シリーズ、及び「UIElements Expansions」シリーズで共通して利用することができます。

購入後「マイアセット」からインポートすることができます。

オブジェクトプール

ここではListとDictionaryでのオブジェクトプール利用方法を解説します。

オブジェクトプールの利用は以下の手順が必要です。これを繰り返していくことにより最小限のリソースに抑えることができます。

  1. オブジェクトプールからの取得(プールにオブジェクトがない場合は新規作成)
  2. オブジェクトの利用
  3. 利用が終わった場合、オブジェクトプールへ再びオブジェクトを戻す

特に3を適切に戻していくと効果が最大限発揮できます。

実際のコードは以下です。

// オブジェクトプールからの取得 or オブジェクトの新規作成
List<string> stringList = List.Create<string>();
...
オブジェクトの利用
...
// オブジェクトプールへ戻す
stringList.Release();

Dictionaryの場合は以下です。

// オブジェクトプールからの取得 or オブジェクトの新規作成
Dictionary<string, string> stringDictionary = Dictionary.Create<string, string>();
...
オブジェクトの利用
...
// オブジェクトプールへ戻す
stringDictionary.Release();

QueueやStackなどその他のコレクションでもオブジェクトプールを提供しています。詳しくはドキュメントを御覧ください。

Utility関数

Json

JsonクラスはJsonのエンコード、デコードを行うことができます。

var dictionary = new Dictionary<string, object>( ) {
    ["AA"] = "BB",
    ["CC"] = "DD",
    ["EE"] = "FF"
};
// Jsonのシリアライズ
string json = Utils.Json.Serialize( dictionary );

// Jsonのデシリアライズ
var desirialized = Utils.Json.Deserialize( json ) as Dictionary<string, object>;
// Dictionaryにキャストしたものを取得
var desirializedDictionary = Utils.Json.DeserializeAsDictionary( json );

Text

ランダムコードを作成するメソッドなどを提供しています。

// 12文字のランダムコードを作成します
string text1 = Utils.Text.GenerateCode( 12 );
// 紛らわしい1とl、Oと0といった文字を排除したランダムコードを作成します
string id = Utils.Text.GenerateCodeForID( 12 );

Path

パスやURLに関するメソッドを提供しています。

// 指定した階層にある文字を出力します。
string indexed = Utils.Path.Index( "/a/b/c/", 2 ); // b
// 最初の階層の文字を取得します
Utils.Path.First( "a/b/c/" ); // a
// 最後の階層の文字を取得します
Utils.Path.Last( "a/b/c" ); // c

AES

AESによる暗号化、復号化を行います。

// 暗号化
string encrypted = AES.Encrypt( "Any content", "Password" );
// 復号化
string decrypted = AES.Decrypt( encrypted, "Password" );

他にも様々なユーティリティ関数があります。詳しくはドキュメントを御覧ください。

拡張メソッド

様々な拡張メソッドが利用可能です。

// 数値を指定した数値の範囲内に制限します
int n = 100;
n = n.Limit( 20, 50 ); // 50

// 文字列をSHA256でハッシュ化します
string text = "text";
string hashed = text.ToSHA256();

// UNIX時間のタイムスタンプをDateTime型に変換します
long time = 1586353019;
DateTime date = time.ToDateTime(); // 2020/04/08 22:36:59

// DateTime型をUNIX時間のタイムスタンプに変換します
time = date.ToUnixTime(); // 1586353019

他にも様々な拡張メソッドがあります。

まとめ

Masamune framework」を導入することでC#の記述 Unityの開発 を楽に短く行うことができるようになります。

ぜひ「Masamune framework」を導入して快適なゲーム制作ライフを楽しんでください!

気になりましたらアセットストアで販売していますので是非ご検討ください!

【Unity】UIElements Expansions: Form

Development Unity UIElements AssetStore CSharp

◀︎ Next
【Unity】IconFont - Masamune framework

Development Unity Masamune AssetStore CSharp

▶︎ Previous