Android上でUnityを動かすためのノウハウ / Android with Unity

828a043ea62abb720c882a4f77d495e6?s=47 morizooo
August 22, 2018

Android上でUnityを動かすためのノウハウ / Android with Unity

828a043ea62abb720c882a4f77d495e6?s=128

morizooo

August 22, 2018
Tweet

Transcript

  1. Android上でUnityを 動かすためのノウハウ LIVE STREAMING HACK #1 2018.08.22 YUTA MORIOKA Mirrativ,

    Inc. © 2018 Mirrativ, Inc.
  2. •Profile •morizooo •2018年2月入社 •ミラティブのAndroid作ってます •UnityはAndroidビルド部分しか触ってません

  3. •Android上でUnityを動かす

  4. •Unityからのエクスポート • ARM64はUnity 2018.2から使用可能 • apply pluginをlibraryに変更 • Manifestの不要な部分を削除 → AARを作成

  5. •UnityPlayerの使い方 • UnityPlayerにcontextを渡してFrameLayoutにAddすればOK • SurfaceViewにアバターが映るのでリフレクション使って透過させる

  6. •UnitySendMessageについて UnitySendMessage("GameObjectName1", "MethodName1", "Message to send"); •NativeからUnityのコールバックを実行するための関数 •主な用途はUnity用のプラグインをNativeで書くときに使われている → MirrativではAndroid/iOSからUnityを操作するために利用

  7. •困ったこと •UnityPlayerを破棄するとアプリが落ちる →android:processを設定することで対処

  8. •困ったこと •UnityPlayerを一度破棄すると、再生成できない - 配信視聴時にインスタンス作成、終了時に破棄したかった - 原因わからず。そもそも複数回作られるような想定がされてなさそう  → Applicationクラスにグローバルインスタンスとして作成して対処  → UnityPlayerを破棄することはできないので、 Activity破棄時にUnityPlayer.pause()を実行

  9. •困ったこと •UnityPlayerの上にViewを重ねる - Viewを配置するだけだとUnityPlayerが最前面になる - WindowManagerでアプリに重ねて表示する →配信時にパーミションは取っているが視聴時は取ってない ... - 透過したDialogFragmentを使うことで実現

  10. •今後の展望 •Android5,6系のパフォーマンス改善 - 電池使用量が多いので現状対象外(充電中でも30分で10%減る) - 原因調査中。内部で動いているのがSurfaceViewなのが原因か? •リップシンクの精度向上 - 配信時はマイク音声、視聴時はRTMP音声を基にリップシンクしてます •他にもやりたいことが沢山あります!!

  11. 現在ゲーム好きなAndroidエンジニアを積極採用中! © 2018 Mirrativ, Inc. 詳細はこちら! https://www.wantedly.com/projects/226247 ◆具体的な業務内容 ・MirrativのAndroidアプリ開発 ◆必須の経験/能

    ・Java or Kotlinでの Androidアプリ開発経験 ・Mirrativのサービス内容や コンセプト、未来像に共感できる