Flash:セットアップ
Flash: デバッグ

Flash: ビルドと実行

次のガイドを手順どおりにしたがって Flash にエクスポートされた新規のプロジェクトをビルドおよび実行できます。

  1. Unity コンテンツを作成
  2. File->Build Settings を選択して Build Settings ダイアログを起動してシーンを全て追加
  3. Platform を Flash Player に変更
  4. Target Player はデフォルトのまま。このオプションにより必要とする機能にもとづいて ターゲット Flash Player を変更が出来ます(詳細については http://www.adobe.com/support/documentation/en/flashplayer/releasenotes.htmlを参照して下さい)。
  5. Development Build をチェック。(これにより Unity は 最終 SWF ファイルを圧縮 しません 。圧縮しないことでビルドは速くなり,そしてさらに SWF ファイルは Flash Player での実行前に解凍する必要がありません。 Development Build オプションを用いてビルドした空のシーンで 16MB ぐらいのサイズであり,圧縮の場合は 2MB ぐらいであることに留意して下さい。)
  6. Build ボタンを押下

Unity は SWF ファイルを選択した場所にビルドします。追加で次のファイルを作成します:

  • HTML ファイル - Flashでビルドされたコンテンツの表示に使用
  • swfobject.js ファイル - Flash Player および ブラウザ統合のチェックをハンドリング
  • embeddingapi.swc ファイル

Flashでビルドされたコンテンツを表示するには HTML ファイルを開きます。SWF ファイルを直接開かないで下さい。

ビルドおよび実行により同じファイルを作成し,デフォルトブラウザを起動し,そして生成されたHTML ファイルをロードします。

ビルドで作成された embeddingapi.swc ファイルにより自身のプロジェクトで SWF をロード出来るようになります。Unity コンテンツを標準 Flash プロジェクトに埋め込むことで Flash で GUI が使用出来るようになります。この種の Flash 統合は他のビルドターゲットでは動作しません。

他のビルドターゲットと同様,指定できるプレイヤー設定があります。ほとんどの Flash 設定は他のプラットフォームと共通です。コンテンツの解像度はスタンドアローンプレイヤー設定から取得されることに留意して下さい。

Flash API ではテクスチャ ハンドルがあり, SWC 埋め込みとの組み合わせで Flash からの Webcam,動画,ベクトルグラフィックスをテクスチャとして扱う手段となります。

ビルドプロセス

Unity Flash パブリッシャ はスクリプトを C#/UnityScript から ActionScript へ変換を試みます。このプロセスにおいて,2 種類の変換エラーがありえます:

  • Unity コード から ActionScript への変換時のエラー
  • 変換コードをコンパイルするときのエラー

変換時のエラーは元ファイルを指し示し,UnityScript エラーメッセージでおなじみのファイル名および行番号がつきます。

AcionScript 変換コードをコンパイルするときのエラーは生成された ActionScript コード(ファイル名が .as で終わる)のメッセージが表示されます。

AcionScript 変換コードのデバッグ

ビルドのとき,AcionScript 変換コードのファイル (.as) はプロジェクトフォルダの次の場所に格納されます:

  • /Temp/StagingArea/Data/ConvertedDotNetCode/

もしSWF ファイルでエラーに遭遇した場合(実行時またはビルドの際に),この変換コードをみると便利です。

コンパイル時のあらゆるActionScriptエラーは容易に理解できないことがありえます。ActionScript はあくまで自身のゲームスクリプト コードから生成されているため,変更をしないといけないのは自身のオリジナルコードであり,ActionScript 変換コードでないことを忘れないで下さい。

特定 Flash Player バージョン向けのビルド

Build Settingsウィンドウでのドロップダウン ボックスによりどの Flash Player バージョンをターゲットとするか選択することが出来ます。これはUnity プロジェクトを作成/開くにあたって,デフォルトでサポートされている Flash Player のうちもっとも古いバージョン(現在11.2)となります。

もし特定 Flash Player バージョン向けのビルドを行いたい場合は,エディタ スクリプトを作成してビルドを自動化できます。これを行うためには,エディタスクリプトからFlashをビルドするときに EditorUserBuildSettingsFlashBuildSubtarget を指定できます。サンプルとしては:

EditorUserBuildSettings.flashBuildSubtarget = FlashBuildSubtarget.Flash11dot2;
BuildPipeline.BuildPlayer(..., ..., BuildTarget.FlashPlayer, BuildOptions.Development);


ビルドエラーおよび警告の例

Flash エクスポート時に遭遇するかもしれない,良くあるエラー/警告を以下にまとめます。自身のエラーが以下に含まれてない場合も, Forums および Answers でもFlash エクスポート専用のセクションがあり役立つ場合があります。

Unable to find Java

Error building Player: Exception: Compiling SWF Failed: Unable to launch Java - is the Java Runtime Environment (JRE) installed?


もしビルド時に上記のエラーに遭遇した場合 32-bit JRE をインストール して再試行してください。

‘TerrainCollider’ is not supported

'TerrainCollider' is not supported when building for FlashPlayer. 
'TerrainData' is not supported when building for FlashPlayer. 
Asset: 'Assets/New Terrain.asset'


Terrain 機能は FlashPlayer ターゲット向けのビルドではサポートされていません。全ての サポートされていない機能 は同様の警告が生成されます。しかしビルドは継続し,サポートされてない機能は最終 SWF から欠落します。

Unboxing

Error: Call to a possibly undefined method RuntimeServices_UnboxSingle_Object through a reference with static type Class.


この原因はUnityScript側で定義された型の間の変換が, 自身の Flash パブリッシャーで定義されてないことである可能性が高いです。 Unbox に絡んだ全てのエラーは,型変換が必要であるけれども見つからなかったことを意味します。この問題を解決するためには:

  • #pragma strict を使用することを忘れず,全ての “implicit downcast” 警告メッセージに対処します。
  • 経験則上は実行時のオブジェクト型からプリミティブ型(int, float, その他)へのキャストを回避することです。さらに次のようにして,ジェネリックなコンテナより,明示的なコンテナを優先してください:
    • System.Collections.Generic.List.<float> instead of Array
    • Dictionary<string, float> instead of Hashtable

UnauthorizedAccessException

Error building Player: UnauthorizedAccessException: Access to the path "Temp/StagingArea/Data/ConvertedDotNetCode/global" is denied.


もしUnityが生成したActionScriptがテキストエディタで開かれている場合,Unityがこのエラーを発行してビルドを拒否する場合があります。これを解決するためには,ActionScriptファイルを閉じてUnityが上書きできるようにします。

Flash:セットアップ
Flash: デバッグ