初心者 flutter_unity_widget 2022.2.0のpub.devを読む ３

# 構造を理解する　

## Setup 2
公式ドキュメントのDeepLによる翻訳　続き

***
必要なもの 

既存のFlutterプロジェクト（ない場合は新規に作成します）

既存のUnityプロジェクト（ない場合は新規に作成することができます）。
***

　もちろん新規に作成してもよいのだけれど、今回は前回の[動画](https://www.youtube.com/watch?v=exNPmv_7--Q)に倣って、まるごとダウンロード方式をとる。　

https://github.com/juicycleff/flutter-unity-view-widget/tree/master

　GitHubの扱いに自信がなく、権限が、とか、トークンが、とか考えたくなければ、あっさりDownloadZipを選ぶのが簡単だ。するとDownloadフォルダ内にflutter-unity-view-widget-masterができる。このままでも使えるし、気になるなら好きな場所に移動させるとよい。　

## コードをじっくり観察する　
　学習方法は人それぞれだろうが、私は、わかってもわからなくてもコード全体を読むのが好きだ。とはいえ、闇雲にfileを開いても迷子になるだけなので、的を絞ろう。今回はFlutterのプロジェクトとUnityのプロジェクトをそれぞれ用意しろ、と言われている段階なので、それがflutter-unity-view-widget-masterの中の、どれのことなのかを知らなければならない。　

　公式ドキュメントとは少し前後するが、動画の手順に沿っていこう。
### Unityのプロジェクトはどこにあるのか。　
　作業の概略はこうなる　
- DownloadしたプロジェクトからUnityのプロジェクトを見つける。
- Unityのプロジェクトを開き、Flutterに向けてExportする。
- DownloadしたプロジェクトからFlutterのプロジェクトを見つける。
- UnityからExportされたフォルダがFlutterプロジェクトの中にあることを確認する。
- Flutterでアプリをビルドする。

　では探してみよう。
- flutter-unity-view-widget-master
    - example
        - unity
            - DemoApp

　Unityのfileを覗いたことのある人なら、このDemoAppがUnityのプロジェクトらしいと感じるだろう。なので位置を覚えたらUnityHubの「開く」からこのフォルダを探して開く。　
　以下のようなアラートが出るかもしれない。

![スクリーンショット 2022-10-22 10.17.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1646810/9a742322-2712-5210-8745-1ba9a54a49ac.png)

　その場合、Unityのversionを変更する。私は2022.1.20f1があったので、それで開いた。基本、ぴったりか少しだけ上、がリスクが少ないようだ。　

　プロジェクトが立ち上がると、動画ではこんな構成になっている。 
![スクリーンショット 2022-10-22 10.28.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1646810/e3cd2d9a-2fe3-de5a-339d-d5971a4711ea.png)

　2022年10月現在は以下のとおり。　
![スクリーンショット 2022-10-22 10.28.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1646810/8a4fe0a7-43f1-ab5a-e8ef-015ab4863102.png)

### Unityでsettingする

　動画はここでまず、Cubeに赤いマテリアルをつけている。

　次に、file　→　Build Setting　と開いて、PlatformからAndroidを選び、右下のSwitch Platformをクリックしている。

　もしUnityでこれまでAndroidやiOSを使ったことがなければ、PlatformのAndroidやiOSのマークがアクティブになっていないだろう。その場合は、そこをクリックしてインストールする必要がある。

　Androidにswitchできたら左下のPlayer Sttingsをクリック。右下のSettingsからさらにOther Settingsを開いて、
- Configurationの中のScriptingBackgroundがIL2CPPになっていること
- Target ArchitecturesのARMv7とARM64にチェックが入っていること

を確認する。今回はDemoAppを使っているので既にできているが、新規で作成する場合は、設定の必要がある。　
　この動画ではAndroidしか扱っていないが、iOSでも同じ手順を踏む必要がある。　

　また、この段階で、appleシリコンのMacユーザーには「サポートしてません」系の警告が出る。この段階では無視しても大丈夫だと思うが、一応、対応策はこちら。　

https://haruton3301.com/articles/unity-m1mac-warning

### UnityをExportする　
　画面上部のメニューバーでFlutterを選ぶ。
![スクリーンショット 2022-10-22 11.20.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1646810/3d9d2dbf-bf22-070b-0bee-23d695c2247c.png)

　Flutter連携がはじめてなら、これまでここにFlutterという文字はなかったはずだし、既存のプロジェクトを開いてもやはり、ない。これは最初からDemoAppに連携設定がされているからで、その詳細はまた改めて検証するとして、ドロップダウンからAndroidのデバッグを選ぶ。Successの表示が出たら、iOSも同様にDebugモードでExportする。　

### Exportされたものはどこにあるのか
　Finderで確認しよう。今まで作業してきたのは、DemoAppだった。
- flutter-unity-view-widget-master
    - example
        - unity
            - DemoApp

　そして結論からいってしまうと、今Exportしたものは
- flutter-unity-view-widget-master
    - example
        - Android
            - unityLibrary
        - iOS
            - unityLibrary
        - unity
            - DemoApp
          
の、二つのunityLibrary（動画ではUnityExport）に入っている。そして実は、このexampleというフォルダこそが、Flutterプロジェクト、ということになる。
　今回は最初から入れ子構造ができあがったSampleを使っているので、unityでExportしたものも、またunityのプロジェクトそのものも自動的にFlutterプロジェクト内に保存されたわけだが、今後、新規で作業する場合は、unityプロジェクトがflutterプロジェクト内に置いたunity_directoryに保存されるようにしなければならいというわけだ。　

## 次回はFlutter側で作業　

https://qiita.com/dongri727/items/e484564439b1da62566e

https://qiita.com/dongri727/items/34ffa1025fedbbe77afe