×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Android上でUnityを 動かすためのノウハウ LIVE STREAMING HACK #1 2018.08.22 YUTA MORIOKA Mirrativ, Inc. © 2018 Mirrativ, Inc.
Slide 2
Slide 2 text
●Profile ●morizooo ●2018年2月入社 ●ミラティブのAndroid作ってます ●UnityはAndroidビルド部分しか触ってません
Slide 3
Slide 3 text
●Android上でUnityを動かす
Slide 4
Slide 4 text
●Unityからのエクスポート ● ARM64はUnity 2018.2から使用可能 ● apply pluginをlibraryに変更 ● Manifestの不要な部分を削除 → AARを作成
Slide 5
Slide 5 text
●UnityPlayerの使い方 ● UnityPlayerにcontextを渡してFrameLayoutにAddすればOK ● SurfaceViewにアバターが映るのでリフレクション使って透過させる
Slide 6
Slide 6 text
●UnitySendMessageについて UnitySendMessage("GameObjectName1", "MethodName1", "Message to send"); ●NativeからUnityのコールバックを実行するための関数 ●主な用途はUnity用のプラグインをNativeで書くときに使われている → MirrativではAndroid/iOSからUnityを操作するために利用
Slide 7
Slide 7 text
●困ったこと ●UnityPlayerを破棄するとアプリが落ちる →android:processを設定することで対処
Slide 8
Slide 8 text
●困ったこと ●UnityPlayerを一度破棄すると、再生成できない - 配信視聴時にインスタンス作成、終了時に破棄したかった - 原因わからず。そもそも複数回作られるような想定がされてなさそう → Applicationクラスにグローバルインスタンスとして作成して対処 → UnityPlayerを破棄することはできないので、 Activity破棄時にUnityPlayer.pause()を実行
Slide 9
Slide 9 text
●困ったこと ●UnityPlayerの上にViewを重ねる - Viewを配置するだけだとUnityPlayerが最前面になる - WindowManagerでアプリに重ねて表示する →配信時にパーミションは取っているが視聴時は取ってない ... - 透過したDialogFragmentを使うことで実現
Slide 10
Slide 10 text
●今後の展望 ●Android5,6系のパフォーマンス改善 - 電池使用量が多いので現状対象外(充電中でも30分で10%減る) - 原因調査中。内部で動いているのがSurfaceViewなのが原因か? ●リップシンクの精度向上 - 配信時はマイク音声、視聴時はRTMP音声を基にリップシンクしてます ●他にもやりたいことが沢山あります!!
Slide 11
Slide 11 text
現在ゲーム好きなAndroidエンジニアを積極採用中! © 2018 Mirrativ, Inc. 詳細はこちら! https://www.wantedly.com/projects/226247 ◆具体的な業務内容 ・MirrativのAndroidアプリ開発 ◆必須の経験/能 ・Java or Kotlinでの Androidアプリ開発経験 ・Mirrativのサービス内容や コンセプト、未来像に共感できる