Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

20161125 Unity-Android連携の発表資料

2,274 views

Published on

これは2016/11/25のTechBuzz勉強会の発表資料です。
https://atnd.org/events/81260

Unityのnative pluginによってAndroid native機能を呼び出す方法を解説しました。一例として、MicrosoftのCognitive Serviceの一つ、Bing Speech To Text(Android)をUnityで使用できるようにして、Githubで公開しました。

https://github.com/flushpot1125/CognitiveSpeech-STT-Android_Unity

This presentation introduce how to implement Unity-Android native plugin. It also show an example of native plugin. See the above GitHub URL!.

Published in: Technology
  • Hello! I can recommend a site that has helped me. It's called ⇒ www.HelpWriting.net ⇐ So make sure to check it out!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

20161125 Unity-Android連携の発表資料

  1. 1. „2016/11/25 UnityでAndroid nativeの機能を使う⽅法の勘所
  2. 2. ⾃⼰紹介 ・VR/MRアプリ開発者 ・Microsoft MVP for Visual Studio and Development Technologies ・⽇本初?のUnity Certified Developer
  3. 3. Androidアプリの代表作(友達と第1章まで作ってpending..) WaterFall : システムエンジニアが主⼈公のビジュアルノベル
  4. 4. ⽬次 1. UnityでAndroidの機能を呼び出すには? 2. Hello World的な呼び出し⽅ 3. 「Hello World」を越えるには? 4. 実装Tips、その他 5. まとめ
  5. 5. 1. UnityでAndroidの機能を呼び出すには?
  6. 6. 1-1. はじめに Unityでは、OS固有の基本機能については、共通APIで 使えるようにしている。 例:Input.Gyroで、iOSでもAndroidでも ジャイロセンサが使える しかし、それ以外の機能はAPIが準備されていないので、 ⾃分で作る必要がある。
  7. 7. 1-2. 「それ以外の機能」とは? 例 ・Android Studio⽤でしか提供されていない機能 ・⾃社で作った専⽤機能 それらのJavaベースの機能を使うために、Unityでは Native Pluginという仕組みがある。
  8. 8. 1-3. Native Pluginとは? Unityが持つ、OS Nativeの機能を呼び出す仕組み iOSやAndroid nativeのメソッド呼び出しや、 native 側からのコールバックを受けることができる。 Unity C# Java Unityで作ったapk メソッド呼び出し コールバック
  9. 9. 2. Hello World的な呼び出し⽅
  10. 10. 2-1. Android Studioの基礎知識 ・Gradle というビルドシステムを使う ・ApplicationとModuleのどちらかを作ることができる Application : 従来のapk形式のアプリケーション Module : 他から呼び出すために機能をまとめたもの Unityで使うには、Module化するとよい
  11. 11. 2-2. Android Studio側の準備 (1/5) 新規プロジェクトを作成し、Android Libraryを選択
  12. 12. 2-2. Android Studio側の準備 (2/5) ・Unityのライブラリ “classes.jar”をインポート Macの場合 /アプリケーション/Unity/PlaybackEngine/ AndroidPlayer/Variations/mono/Release/ Classes/classes.jar Windowsの場合 C:¥Program Files¥Unity¥Editor¥Data/ PlaybackEngines/AndroidPlayer/ Varitations/mono/Release/ Classes/classes.jar
  13. 13. 2-2. Android Studio側の準備 (3/5) ・build.gradleを修正 https://gist.github.com/flushpot1125/4d8aba4519264552b097807fb041a2cf ソースコードの依存関係に classes.jarを追加 ビルド対象からclasses.jar を除く(同⼀名称の重複を 避けるため)
  14. 14. 2-2. Android Studio側の準備 (4/5) ・ソースコードを記述 Unity側にコールバック したいメソッドは独⾃ ルールに従って書く https://gist.github.com/flushpot1125/084d8d4a6cb21d80ee96273130d3a6ca 専⽤のAPI Unity側のobject名 Unity側のメソッド名, 引数
  15. 15. 2-2. Android Studio側の準備 (5/5) ・gradleの⽂法に沿ってビルド ./gradlew :nativeplugin:clean :nativeplugin:assembleRelease Module名 aar⽣成 ・jarを取り出してUnityで使⽤ Android Studioのプロジェクトトップ /module名 / build / indermediates / bundles / classes.jar 詳細⼿順、サンプルプロジェクトは下記を参照ください。 http://magicbullet.hatenablog.jp/entry/UnityAndroid-plugin1
  16. 16. 2-3. Unity側の準備 ・プロジェクトを作成 ・C#でソースコードを記述 ・Android側の呼びたいメソッドを、以下のように記述 https://gist.github.com/flushpot1125/0ea02351137df3906b8affef896841a6 Unityが提供しているクラス Android Studio側で宣⾔したクラス名 Android Studio側で宣⾔したメソッド名。public必須 詳細⼿順、サンプルプロジェクトは下記を参照ください。 http://magicbullet.hatenablog.jp/entry/UnityAndroid-plugin2
  17. 17. 2-4. 動作確認 Android Studio側で書いた⽂字列を、Unityで表⽰させることに成功! Gifアニメです。Slideshareでは動かない可能性があります。 その場合、下記の記事でご確認ください。 http://magicbullet.hatenablog.jp/entry/http%3A//magicbullet_hatenablog_jp/entry/UnityAndroid-plugin2
  18. 18. 最初、これで解決!と思いました。 しかし、、
  19. 19. これだけだと、Android Studio向け に提供されたサンプルコードをUnityで 使うことができない!(場合が多い)
  20. 20. 3. 「Hello World」を越えるには?
  21. 21. 3-1. 「Hello World」だけでは解決できないこと ・先ほどの⽅法は最も基本的な使い⽅で、いわば「Hello World」 ・しかし、Javaで書かれたサンプルコードをUnityで使おうと すると、「HelloWorld」だけでは対応できない例が多い。 Unity C# Activity なしのjava メソッド 呼び出し コール バック Unity C# Activity ありのjava c/c++の.so Android Manifest シンプルな構成 ? ? Java,so,manifestに依存関係がある場合の構成 より複雑な対応が必要!
  22. 22. 3-2. どうすればよいか? ・⽇本、海外のサイト(例:StackOverFlow)を⾒たが、いまいち 情報がない。 (シンプルな例に関する情報しか出てこない) ⾃分でノウハウを⾒つける!
  23. 23. 3-3. ノウハウ (1) Android Manifestファイルの変更 Unity側のPlugins/Androidに配置し、必要な設定を追加。 (例:permission) Macの場合 /アプリケーション/Unity/PlaybackEngine/ AndroidPlayer/AndroidManifest.xml Windowsの場合 C:¥Program Files¥Unity¥Editor¥Data/ PlaybackEngines/AndroidPlayer/ AndroidManifest.xml
  24. 24. 3-3. ノウハウ (2) C/C++ライブラリの追加 拡張⼦soファイル(C/C++でビルドされたもの)がAndroid側に あるときは、下記のフォルダ構成を作って、armeabi-v7a フォルダに⼊れる。 ファイル名が変わると認識されないので 注意!
  25. 25. 3-3. ノウハウ (3) サービス化 元々Activityがあって⾃⼰完結しているサンプルコードの場合、 Bind Serviceという⽅法を使って、バックグラウンドで動かす。 Activity その他 ライブラリ サンプルコードの構成 service その他 ライブラリ Unityで作る場合の構成 Unity C# Bind Service
  26. 26. 4. 実装Tips、その他
  27. 27. http://magicbullet.hatenablog.jp/entry/UnityAndroid-plugin3 ブログにて更新中! 4-1. 実装 Tips
  28. 28. 4-2. その他 (1/3) Cognitive ServiceのBing Speech API(⾳声認識)の AndroidサンプルをUnityで使えるようにしてみました。 https://azure.microsoft.com/ja-jp/services/cognitive-services/speech/
  29. 29. https://github.com/flushpot1125/CognitiveSpeech-STT-Android_Unity 4-2. その他 (2/3) Githubで公開しました。
  30. 30. ソースコード https://github.com/flushpot1125/CognitiveSpeech-STT-Android_Unity 4-2. その他 (3/3) Android Studio側の⼿順 http://magicbullet.hatenablog.jp/entry/UnityAndroid-plugin4-1 Unity側の⼿順 http://magicbullet.hatenablog.jp/entry/UnityAndroid-plugin4-2 Cognitive Service概要、登録⽅法 http://magicbullet.hatenablog.jp/entry/CognitiveService_BingSpeechAPI 詳細⼿順
  31. 31. 5. まとめ
  32. 32. 5. まとめ ・UnityでAndroid Nativeの機能を使う⽅法を紹介 ・シンプルな使い⽅を越えるためのノウハウを紹介 ・⼀例として、MicrosoftのBing Speech API(Android版)を Unityで使えるようにしたサンプルを紹介

×