2020年2月25日火曜日

(作成アクション)AesEncryptor(暗号アセット)用カスタムアクション

もう一つ、PlayMaker用のカスタムアクションを作ってみました。
やはり nomagames の方で 公開した 「*AES暗号お試し機」に使用した、C#スクリプトを
PMアクションにしたものです。

ブラウザ版のお試しはこちら (別ウィンドウで開きます)

http://sino.sakura.ne.jp/games/WebGL[ASE]/

更に、WebGl日本語入力、ブラウザ外コピペ対応のもの

http://sino.sakura.ne.jp/games/WebGL[ASE]imekairyo/

テキストのAES暗号化には、アセットストアの無償アセット「AesEncryptor」を使用しています。
通常はスクリプトから呼び出して、暗号化復号化をするのですが、PlayMakerの状態遷移
の中で、手軽に使えるようにカスタムアクション化してみました。

パッケージをインポートすると、状態遷移の中、GUI上でテキストを入力し1アクションで
暗号化復号化ができます。

AvoEx_AES_Action.zip

更新履歴

2020/03/10    v1.1 表示上の修正。機能に変更なし。
2020/2          公開

-------------------- 説明 ----------------------------

まず何より、「AesEncryptor」をインポートしなければなりません。
アセットストア 「AesEncryptor」 こちら、もしくはエディタでアセットストアウィンドウを開いて
( Ctrl+9 ) インポートします。

このような構成になっています。


----------------------------------------------------------

インポート後、暗号鍵を設定しておきます。この場所にある [AesEncryptor] ファイルを開き


以下の場所、16行目にある(図では赤字の) defaultKeyString が鍵です。
自由に設定してください。

----------------------------------------------------------

配布パッケージをインポートします。(Projectにドロップで可)
すると[PlayMaker Custom Actions] 内に [@sakusei] フォルダができ、以下の2つの
アクションが追加されます。


アクションブラウザには、カテゴリ 「@sakusei」 が作られ、中に2つのAvoxアクションが
選択可能な状態で並んでいると思います。(図では以前のものも入ってます)

(カテゴリは、スクリプト内の [ActionCategory] で変更できます)  

[AvoEx_text_angouka]      入力されたテキストを暗号化します。
[AvoEx_text_hukugouka]     入力された暗号化文を復号(解読)します。

----------------------------------------------------------

ステートの中に置いて実行すると、機能を確認できます。

暗号化は、 [Text] に暗号化したい文章を入れ(変数も可)ると、[Result] に用意した
string変数に暗号化された文章が出力されます。


string変数のプロパティで、[インスペクタ]にチェックを入れていると Inspector の以下の場所で
暗号化された文章が確認できます。 この文章をコピーしておいて

----------------------------------------------------------

復号化アクションで、[Angou_text] に入力して実行してみると


このように、復号化された文章が表示されます。

このアセットにはもっと高度な使い方もあるようですが、とりあえずテキストを、簡単に
暗号化したい場合には役に立ってくれると思います。

2020年2月24日月曜日

(作成アクション) ローカルストレージ操作

*追記 2020 07/17
Android の64bit用ビルドを始め、WebGLプラットフォーム以外でIL2CPPビルドをする場合
このアクション(スクリプト)はプロジェクトから外してください。
JavaScriptファイルへのファンクション呼び出しがビルド時にエラーになるようです。
(JavaScriptファイル自体は大丈夫)

----------------------------------
PlayMaker用のカスタムアクションを作ってみました。
ブラウザ上のWebGlビルドされたプレイヤーから、ブラウザのローカルストレージへ、キーと値を
書き込む等の操作をするものです。

nomegames の方に掲載の、上図のアプリ用に作成した、C#スクリプトをPMアクションにしたものです。
nomegames内記事 https://nomegames.blogspot.com/2020/02/blog-post_22.html 

通常、WebGlアプリから、ブラウザの機能にアクセスするためには、作成したJavaScriptファイル
のファンクションを、C#スクリプトから呼び出す、といった事をしなければなりません。

しかし、このパッケージをインポートすると、PlayMakerの状態遷移の中で、キー、値をGUI上で
指定した上で、1アクション(見た目上)で目的を果たすことができます。

WebGl_LocalStorage_Sousa.zip

更新履歴

2020/03/10    v1.1 表示上の修正。機能に変更なし。
2020/2          公開

-------------------- 説明 ----------------------------------------------

 パッケージをインポート、(ProjectのAssetsにドロップで可)
すると[PlayMaker Custom Actions] 内に [@sakusei] フォルダができ、以下のアクションが
追加されます。また[Plugin] フォルダ内に webgl_javascriptのファイルが置かれます。

--------------------------------------------------------------------------

アクションブラウザには、カテゴリ 「@sakusei」 が作られ、中に5つのアクションが選択可能な
状態で並んでいると思います。(カテゴリは、スクリプト内の [ActionCategory] で変更できます)  
 
それぞれ
[webgl_localstorage_write]       指定キーに値を書き込む。
[webgl_localstorage_read]       指定キーから値を読み込む。
[webgl_localstorage_sakuzyo]     指定キー自体を削除する。
[webgl_localstorage_clear]       データ全体を削除する。
[webgl_localstorage_kazusyutoku]  存在するキーの数を調べる。

--------------------------------------------------------------------------

後は、ステートの中に置いて実行するだけです。
Motokey がキー。 Motoatai が値です。変数での指定もできます。

エディタ上で実行しても、コンソールに
EntryPointNotFoundException: StorageWrite 等の注意が出るだけです。
効果は実際に、WebGlビルドをしてブラウザで確かめます。
ローカル環境ではブラウザによっても、挙動は異なるようです。

ローカルストレージの特徴である、同一ドメイン内でデータを共有できるという事を
確かめるためにも、実際にサーバにアップロードしてのテストがよいのでしょう。