2020年7月20日月曜日

以前のバージョンのUnity & PlayMaker で作成したプロジェクトを読み込む

大変だったいうお話。
こういうケースは、ままありますね。

「GooglePlayのアプリを64bitに対応させなければ、8月1日以降非公開になる」

なんていうのは、いい例なのかな。Unity 5 で作ったプロジェクトを64bit対応させる
ためには最近のUnityで開いて、ビルドし直さなければならない…
とりあえずやってみよう。ということで、直接 Unity 2019 で開いてみるも、動かない。
コンパイルエラー。バグメッセージは多すぎて読む気にもならない。

Unity だけでもバージョン間の差異があり、更にPlayMakerなどのアセットは、その
バージョンのUnity 用に調整された当時のバージョンだったりする。
新たに現バージョンのPlayMakerを上書きしてみても、動作せず。
複雑さが、ましましです。

以下、他のブログに書いたメモと言うか、愚痴の補足転載でアレなんですが。
 -------------------------------------

GooglePlayのアプリ。64bitに対応させなきゃ8月1日以降非公開にされてしまう件。

で、一つだけは対応させて残そうとしてるのだけれど、大変。
Unity5.7でのプロジェクトを、Unity2019で開いてビルドしなければならない。
(実際は2017.4以降で出来るよう)

比較的単純な仕組みなので、バージョンの影響は受けないだろうと思いきや、
ビジュアルスクリプトPlayMakerのバージョンが合わない。
Unity5時代に対応していたバージョンのPlayMakerが最近のunityでは上手く動かない。

仕方ないので、現バージョンのPlayMakerや関連アセットがインストールされた
「Unity2019プロジェクト」を新たに作り、シーンファイル、絵や音、プレハブなどが入った
関連フォルダを持ち込む。

とりあえず動きそう。
しかし、PlayMakerのグローバル変数は手書きで移植
(ファイル移設出来るはずなのだが、何故か無理)

オブジェクトに設定するTagも不完全でやはり手動移植。

おまけに、iTweenを使っていたため実行エラーが出て止まる…
これは現在のPlayMakerがiTweenをサポートせず、該当アクションとiTweenアセット
自体が存在しないため。
レガシー扱いのITweenアクションとiTweenアセットをインポートしてもどうも上手く動かない。
やはりiTweenは過去のものか。

DOTweenの類似アクションに差し替えて、さて上手く動くか。
ほんとこれ一つだけにしておこう…

 -------------------------------------
実際これで動き、ビルドして、GooglePlayに更新アップロードできたのですが、
何度もやりたいことではないですね()

FSM(状態遷移)は並べられたアクションを名前だけで認識、実行するので
アクションの中身(C#スクリプト)が現在のUnity環境に応じたものになっていれば
そのまま動くだろう。と思い、まあ、そうなのですが、アクション自体が消滅していたり
アクションの挙動が微妙に変わっていたりなどは、どうしようもないです。

ふわっとした感想を言えば、間に入るものが多いほど、それぞれの変化の影響で
複雑さがまし、全体像は見えなくなり、いざ、というとき大変だ…ということですね。

ビジュアルスクリプトはじめ、システムに深く関わるアセットを使用する際のある意味
デメリットかなぁ。このブログであまり書きたくないけれど()

(追記)
愚痴っぽく書いてしまったものの実際は、PlayMakerのアクションを通してUnityに
アクセスしている構造のプロジェクトだから、いくつか問題はあっても 離れたバージョン
のUnity へ(わかりやすい手間だけで)移設できてるんですよね。
システムの差異を吸収してくれているPlayMakerが凄いということです。

Unityのバージョンアップに逐一対応してくれるところが、開発元の信頼されている
理由だと思います。

2020年7月19日日曜日

IL2CPP ビルドと PlayMaker

まず、当ブログ内記事(作成アクション) ローカルストレージ操作  で配布している
アクションの説明に、追記をしました。

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


DLした方は、「そんなもんなんだな」ぐらいに思っておいてください。
WebGL用のアクションですが、プラットフォームをスイッチして、このファイル類をそのままに
していると、ビルドエラーに。(JavaScriptファイル自体は大丈夫)

調べてみると、IL2CPPビルドでエラーになる原因は、プロジェクトフォルダまでのパスに
「日本語が含まれていること」と、「参照エラー」ということ。
「JavaScriptファイルへのファンクション呼び出し」が参照エラーになるのでしょう。
実際、PLayMaker関係なくスクリプトの問題ですね。


で、ちょっと気になるのは、プロジェクト内の日本語はどうなのかということ。
結論から言うと、Assets内のフォルダ名、フォルダ内のファイルやプレハブ名、シーン上の
オブジェクト名、などに日本語が含まれていても問題ありませんでした。

また、PlayMaker のFSM(状態遷移)名やステート名、変数名、イベント名、コメントなど
このブログでは、頑なに?日本語を使用していますが、これも問題ありません。

引き続きこのブログでは、PlayMaker内を日本語表記で使用していきたいと思います。


2020年7月17日金曜日

プレハブ内のFSM編集

これまではフォルダにあるプレハブを選択するだけで、プレハブに付けられた
FSM (状態遷移) をPlayMakerエディターで確認、編集できました。

しかし、Unity2019 になってからなのか、ダブルクリックして Hierarchy 内で開いて
からでないと、できなくなりました。
シーン画面がプレハブの内容になってしまい、また、戻るためにクリック、変更の確認
をしなければならず、正直言って面倒になったなぁ…と思ったのですが、良い部分も
ありました。

以前のフォルダ内では、プレハブに子オブジェ、孫オブジェ…がついていた場合も
子オブジェまでしか確認できませんでした。
FSMの編集も当然そこまでで、孫オブジェ以下のFSMはプレハブになってしまうと
プレハブのままでは、追加編集ができなかったのです。
(新たなプレハブとして作り直すしかなく、プロジェクト内で、それまでのものを
インスタンスする部分全てに設定し直し)

ですが、今は Hierarchy 内でプレハブ全体を確認できるので、孫オブジェ以下の
FSM も編集できます。新たに子オブジェクト等を追加することもできます。
複雑な挙動をさせるオブジェクトの場合は、結構助かる面があると思います。


2020年7月12日日曜日

PlayMakerと広告、課金

スマートフォン向けにビルドする場合に利用できる、
「PlayMakerアクション付き、広告、課金処理アセット」
についてです。

定番といえば、Stan's Assets さんのラインナップだと思います。
googole の AdMobや アプリ内課金などに対応したアセットを多く作られていました。

いました…というのは、以前はAdMob広告表示用、アプリ内課金用、SNS連携用などと
小分けで販売されていて、PlayMaker用のアクションも内包されていたのですが、今は
それらがなくなり、

Android用諸々こみの Android Native Pro  IOS用の  IOS Native Pro
両方セットの       Ultimate Mobile Pro     に整理されたようです。

上記の内でPlayMaker用アクションがついているのは、今のところ Ultimate Mobile Pro
だけのようです。どのようなアクションかわかりませんが、以前の 「Google Mobile Ads SDK」
などと同じなら、このような感じでFSM内で簡単に使えるかと。サンプルシーンもありました。

空オブジェなどにノードをまとめておき、グローバルイベントで呼び出すのが
メインか。

今パッと見て、PlayMaker用アクション付きの、AdMobアセットは
Mobile Ads (GDPR Compliant) 20$でしょうか。動画で設置方法も解説されてます。
「Google Mobile Ads SDK」のような、SDKの自動DLなどは出来ないようです。

(追記)
上記 Mobile Ads (GDPR Compliant) ビデオチュートリアル通りで
テスト広告表示できました。Unity 2019.3.3f1 PlayMaker 1.9.0.p20
ボタンアクション等、今のアクションに変更しました。質問があればコメント等で

他 PlayMaker  +
Ads    IAP   Money   または、対象のサービス名
などでアセットストア内を検索すれば、

Unity Ads や日本ではマイナーなサービスにも対応した
PlayMaker用アクション付きアセットが見つかります。