UnityでUWP(Windows Store)アプリを作るときに気を付けること

こんにちは。Kishiです。

まずは宣伝。以前紹介したアプリの公式ホームページができました。

http://trsasasusu.sakura.ne.jp/spinactioncreator/ja/

では、本題。

Unityは本当に様々なプラットフォームに対応しています。その中にUWP、Universal Windows Platformも含まれています。そこで、せっかくスピンアクションクリエイターをAndroid向けに出しているのだからこちらにも進出してみようということで、Android版から何も変えずにBuild SettingsからSwitch Platformしてビルドしてみました。

すると、エラーが出るわ出るわでビルドできませんでした。

最終的にはリリースまでこぎつけたのですが、そこまでにぶつかった壁を紹介していきます。

1. AES問題

このゲームではAESを用いて暗号化していたのですが、なんとAesManagedなどの暗号化で通常用いられているクラスが使用できないのです。そのため、

<br />
#if NETFX_CORE<br />
// UWP用の処理<br />
#else<br />
// その他のプラットフォーム用の処理<br />
#endif<br />

を用いて他のプラットフォームと分岐させなければなりません。UWP用の暗号化については、 http://qiita.com/utisam/items/4ff154335519650d189b#_reference-834101a5ec3afe6a51acが非常にわかりやすいです。

2. StreamWriterのClose()がない

ただびっくり。Dispose()を使いましょう。

3. シェーダーでTRANSFER_SHADOW(o)が使えない

必要な場所でこれがないと死ぬプラットフォーム(Androidで強制終了くらった)と、これがあると死ぬプラットフォームがあるので注意。

4. タッチのできるデバイスとできないデバイスがある

公式にこれに対応するためのソースコードが出ていますが、以下の

<br />
UnityEngine.WSA.Application.InvokeOnUIThread(() =&gt;<br />
    {<br />
      isInTouchMode =<br />
        UIViewSettings.GetForCurrentView().UserInteractionMode ==<br />
        UserInteractionMode.Touch;<br />
    }, true);<br />

<br />
UnityEngine.WSA.Application.InvokeOnUIThread(() =&gt;<br />
    {<br />
      isInTouchMode =<br />
        Windows.UI.ViewManagement.UIViewSettings.GetForCurrentView().UserInteractionMode ==<br />
        Windows.UI.ViewManagement.UserInteractionMode.Touch;<br />
    }, true);<br />

としないとビルドできません(または、usingするか)。そもそもタッチのできるWindowsデバイスを自分は持っていないので本当に動いているのか検証できていません。(おそらくテスターの方々によるテストを通っているので動作しているのだと思います)

5. Handheld.PlayFullScreenMovie()に注意

StreamingAssetsに入れたビデオが再生されなくてびっくりしました。公式には確かに使えそうなことが書いてあったので。そこで、調べてみるとどこかの海外のフォーラムにて、第1引数を

<br />
&quot;hoge.mp4&quot;<br />

から

<br />
System.IO.Path.Combine(Application.streamingAssetsPath, &quot;hoge.mp4&quot;)<br />

と書き直すと動く、と書いてあったので実際にやってみたら動きました。Android(おそらくiOSも)だったら省略できるのに…。

 

ここからは、.slnを作った後の話です。

6. ここまで来てビルドできない

UWPアプリをUnity以外で普通に開発するときのクラス名と被っているとエラーが出ます。自分はUnityで独自にFileIOクラスを作っていたので、これと被ってエラーを吐かれました。Windows.Storage.FileIOというように名前空間を直接つけて修正しましょう。

7. Debugビルドの実行が異様に遅い

普通の動作テストはReleaseビルドで行いましょう。そして、リリースするときはMasterビルドにしましょう。海外のフォーラムにも結構上がっています。

8. Masterビルドのx64版が死ぬ

正確には、uGUIのScroll Rectが死にます。他にも何か死んでいて、もう実態がつかめないのでx64版はあきらめました。x86版とARM版だけで行きました。

 

ここからはリリース前後の話です。

9. 手続きが大変

これはしょうがないです。決められた大きさのスクリーンショットが必要だったり、課金のために条約が何とかあったりといろいろありますが、がんばりましょう。もちろん認定のために審査があるので、Androidに比べてリリースには時間がかかります。

10. 突然の更新リジェクト

謎。テスターへの文面を英語と日本語両方で丁寧に書いたら通りました。

 

とりあえず、以上です。予想以上に大変でしたが、無事リリースできました(宣伝)

以下の公式バッジは https://developer.microsoft.com/en-us/store/badges で作ることができます。

Get it on Windows 10

スピンアクションクリエイターはWindows Storeで「ゲームを作る」と検索するだけで候補に出てきます。この記事を読んで役に立った方は、ぜひ評価をしていただきたく存じます。そうしていただけるとものすごく嬉しいです(ものすごくものすごく宣伝)

Posted on